rails:2882
From: "Andy Matsubara" <andymatsubara@g...>
Date: Tue, 21 Oct 2008 18:58:30 +0900
Subject: [rails:2882] Re: ActiveRecord2.1にて、メソッド内からDBデータを呼び出せない
回避策としては "#{foo}#{bar}" を "#{self.foo}#{self.bar}" とすればいいのではないかと思います。 自分は癖で,いつもselfを付けて書いていたので 仕様が変わったのかどうかそのあたりは気付きませんでした。 Andy 2008/10/21 18:39 久野@サイベイト <hisano@s...>: > 久野と申します。 > > 最近、railsのバージョンを1.2系から2.1系にアップしたのですが、 > テーブルの属性値にクラスの内部からアクセスしようとすると、 > 以下のようなエラーが出るようになりました。 > > > ■環境 > rails 2.1.1 > activerecord 2.1.1 > mysql 2.7 > > > ■DB > projects(id integer, foo string, bar string) > > > ■class定義 > class Project << ActiveRecord::Base > def foobar > "#{foo}#{bar}" > end > end > > ■実行内容 > $ ruby script/console > Loading development environment. >>> prj = Project.find(1) > => #<Project:0x7f545be4 @attributes={"id"=>"1", "foo"=>"foo","bar"=>""}> > >>> prj.bar > => "" > > 外部からの呼び出しは問題なし > > >>> prj.foobar > NameError: undefined local variable or method `bar' for > #<Project:0xb78ba530> > from > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/attribute_methods.rb:256:in > `method_missing' > from /home/***/***/app/models/project.rb:**:in `foobar' > from (irb):2 >>> > > !!属性値barをメソッド内から呼び出すと上記のエラーが出る。 > > > どなたか原因や回避策などご存知でしたらご教授お願いします。 > なお、関係ないと思われる部分は削除してあります。 > > -- > 久野 孝泰 > hisano@s... > > > > -- > ML: rails@r... > 使い方: http://QuickML.com/ > -- ML: rails@r... 使い方: http://QuickML.com/
2881 2008-10-21 11:39 [hisano@s... ] ActiveRecord2.1にて、メソッド内からDBデータを呼び出せない -> 2882 2008-10-21 11:58 ┣[andymatsubara@g... ] 2883 2008-10-21 12:21 ┃┗[hisano@s... ] Re: ActiveRecord2.1にて、メソッド内からDBデータを呼び出せない【解決】 2884 2008-10-21 12:39 ┗[sakuro@2... ] 2885 2008-10-21 14:24 ┗[hisano@s... ]