[前][次][番号順一覧][スレッド一覧]

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...         ]