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 に答える