rails:2883
From: 久野@サイベイト <hisano@s...>
Date: Tue, 21 Oct 2008 19:21:21 +0900
Subject: [rails:2883] Re: ActiveRecord2.1にて、メソッド内からDBデータを呼び出せない【解決】
回答ありがとうございます。
"#{self.foo}#{self.bar}"とすることで
エラーが出なくなりました。
Andy Matsubara さんは書きました:
> 回避策としては
> "#{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/
>
--
Hope the innovation in the sign-trading relations.
サイベイト株式会社
企画部マネジャー
久野 孝泰
hisano@s...
http://www.signovate.co.jp/
--
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... ]