在使用RAILS 2.3.8模型中列名“更改”的activerecord fetch / find的奇怪问题

时间:2010-11-24 10:37:39

标签: ruby-on-rails activerecord

这怎么可能?

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.changes最初为null,然后在记录wq.requirements后,wq.changes似乎没问题?

正在获取的所有必要字段都在模型中包含attr_accessible。

我无法理解这种情况,请帮助所有的铁路大师。

1 个答案:

答案 0 :(得分:2)

属性名称“更改”与AR :: Dirty功能冲突。您应该为该列选择一个不同的名称。

这是Dirty的rails3 api文档:

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

在rails2中,它位于ActiveRecord而不是ActiveModel。

如果您无法重命名该列,则可以通过调用@model_obj[:changes]来解决此问题。

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