2016-08-29 4 views
-2

レール:へのアクセスオブジェクト属性は、私はRailsの4でこれをやっている4

ruleChange.old_value = (Filetype.new(:name => 'ritesh')) 

はしかし、ruleChange.old_valueにアクセスするには、代わりにオブジェクトの、#Filetype:0x007f87b2dce4c0として文字列 を返します。 『:0x007f87b2dce4c0ファイルタイプ』:ため

未定義のメソッド `名」:その結果ruleChange.old_value.name次の例外がスローされた文字列

こっちに何が間違っているのですか?

+0

あなたはあなたのファイルを扱うために使用する? いつruleChangeのold_valueを要求しますか? (あなたはbefore_saveで試してみてください) – XavM

+2

@XavMあなたはあなたの質問でより明確になりますか? – Ritesh

+0

私の最初のコメントのSory、私はあなたのコードを誤解しました。 本当の質問は、なぜあなたはold_valueに新しい値を割り当てたいのですか? old_valueメソッドの代わりに 'object.ruleChange_was'を試しましたか? – XavM

答えて

0

old_valueがデータベースの文字列属性の場合、そのオブジェクトを格納することはできません。 そのオブジェクトの名前属性を保存できます(名前が一意である場合のみ)

古いオブジェクトのIDを格納するためには、old_value_idを使用することをお勧めします。このよう

、あなたはcurrent_object.old_value_id = my_old_object.id. を行うと、このようなあなたのオブジェクトを見つけることができる:MyOldObject.find(current_object.old_value_id).name

それとも、直接的な方法であなたの古いオブジェクトを照会するbelongs_toの関係を定義することができます。何current_object.my_old_object.name

belongs_to :my_old_object, :class_name => 'my_object', :foreign_key => 'my_old_object' 
関連する問題