2010-11-24 9 views
1

これはどのように可能ですか?なぜwq.changesが最初にして、NULLとして来ているRAILS 2.3.8モデルで列名 'changes'を持つactiverecord fetch/findの奇妙な問題

Loading development environment (Rails 2.3.8) 
>> wq = Wq.first(:conditions =>['widget_id=? AND qs_id=?',1,1]) 
=> #<Wq id: 1, widget_id: 1, qs_id: 1, operator: 0, requirements: "2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2", changes: "1", route: 2, created_at: "2010-09-07 08:11:05", updated_at: "2010-11-24 10:25:53", body: "Which specific area of gyt are you aiming to addres...", options: "['xyz','pqr']", input_type: nil, status: 1> 

>> wq.changes 
=> {} 
>> wq.changes 
=> {} 
>> wq.requirements 
=> "2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2" 
>> wq.changes 
=> "1" 

wq.requirementsをログインした後、wq.changesは罰金来ているようですか?

フェッチされているすべての必須フィールドは、モデル内でattr_accessibleを使用しています。

私はこの状況を理解することができません。すべてのあなたの手助けをしてください。

答えて

2

属性名「変更」は、AR :: Dirty機能と競合します。おそらく、その列に対して別の名前を選択するべきです。

ここで汚れたためrails3のAPIドキュメントです:rails2で

http://api.rubyonrails.org/classes/ActiveModel/Dirty.html

それはActiveRecordのではなく、ActiveModelにあります。

列の名前を変更できない場合は、代わりに@model_obj[:changes]を呼び出して問題を回避できます。

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/base.rb#L1466

+0

素晴らしい、ありがとう!私は、キーワード「変更」の可能性のある問題について訴えていたが、何も出てこなかった。あなたは質問のタイトルを変更することが理にかなっていると思いますか? – papdel

+0

確かに、問題がどこにあるか分かりました。トリッキーな質問はあなたのコラムを呼び出すことです。あなたは変更を使用することができますが、これはvestal_versionsと競合します。デルタおそらく? – noodl

+0

私がやることは、カラム名をもっと適切なものに変更することです。 - 'changes'は、とにかく残っているカラム名です。私たちは初期の反復作業をしているので、可能であると信じています。 – papdel