我正在将Rails应用从2.0.2迁移到2.3.5。
我有一个模型类:
class EventQuery < ActiveRecord::Base
set_table_name 'EventQueries'
def to_s; name; end
end
我正在调试控制台中的问题。我尝试为EventQuery对象分配一个属性:
./ script / console production 加载生产环境(Rails 2.3.5)
>> q=EventQuery.new
=> #<EventQuery id: nil, role: nil, name: nil, description: nil, query: nil>
>> q.role="ADM"
> TypeError: can't convert String into Integer
from /usr/lib64/ruby/gems/1.8/gem /activerecord-2.3.5/lib/active_record/dirty.rb:135:in `[]='
(...)
在Rails 2.0.2中,它可以正常工作:
./ script / console production 加载生产环境(Rails 2.0.2)
>> q=EventQuery.new
=> #< EventQuery id: nil, role: nil, name: nil, description: nil, query: nil
>> q.role='ADM'
=> "ADM"
有什么想法吗?谢谢!
我现在认为这必须与作为应用程序一部分的插件record_modified有关。
答案 0 :(得分:0)
此问题与名称与record_modified插件中的方法冲突有关。如果我从加载中排除插件,控制台工作正常。
我决定删除record_modified插件并重构代码。我没有使用RecordModified方法,而是使用ActiveRecord,如下所示:
RecordModified.modified? --> ActiveRecord.changed?
RecordModified.changed_columns --> ActiveRecord.changes + minor refactoring