Rails:迁移到2.3.5后无法分配模型对象值

时间:2012-08-20 14:12:12

标签: ruby-on-rails activerecord migrate

我正在将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有关。

1 个答案:

答案 0 :(得分:0)

此问题与名称与record_modified插件中的方法冲突有关。如果我从加载中排除插件,控制台工作正常。

我决定删除record_modified插件并重构代码。我没有使用RecordModified方法,而是使用ActiveRecord,如下所示:

RecordModified.modified?  --> ActiveRecord.changed?
RecordModified.changed_columns --> ActiveRecord.changes + minor refactoring