0

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

4

1 回答 1

0

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

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

RecordModified.modified?  --> ActiveRecord.changed?
RecordModified.changed_columns --> ActiveRecord.changes + minor refactoring
于 2012-08-20T16:00:50.590 回答