Странная проблема с выборкой / поиском activerecord с именем столбца «изменения» в модели RAILS 2.3.8 - PullRequest
1 голос
/ 24 ноября 2010

Как это возможно?

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 Ответ

2 голосов
/ 24 ноября 2010

Имя атрибута «изменяется» конфликтует с функциональностью AR :: Dirty.Вероятно, вам следует выбрать другое имя для этого столбца.

Вот документы rails3 api для Dirty:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...