2016-06-22 11 views
0

既存のRails 3のアップグレードをRails 4にアップグレードしています。このアプリケーションのサルはActiveRecord::Base#assign_attributesにパッチを当てています。 Rails 4では、パッチされたコードは決して呼び出されません。ActiveRecord :: Base#assign_attributes Rails 4のアップグレード後にmonkey patchが機能しない

私はlibディレクトリから猿のパッチを当てたコードを必要とするconfig初期化子を持っており、起動初期化プロセス中に一度実行されることがわかります。

これはlibディレクトリのmonkeyパッチファイルの簡略化されたバージョンです。

# encoding: UTF-8 
module ActiveRecord 
    class Base 
    alias_method :default_assign_attributes, :assign_attributes 

    def assign_attributes(new_attributes) 
     # Do some custom stuff here 
     default_assign_attributes(new_attributes) 
    end 

    end 
end 

答えて

1

この(および他の多くの)メソッドは、この1つはActiveRecord::AttributeAssignmentに入ったレール4の懸念に出て分割しました。あなたはその懸念ではなく、ActiveRecord::Baseのサルのパッチを当てるべきです。

あなた自身のassign_attributesメソッドを定義したい場合は、ではなく、のコアクラスを使用して独自の懸念事項を定義する必要があります。

+0

私はそれが 'ActiveRecord :: AttributeAssignment'に移ったことを理解します。これはモジュールですが、私はこれを猿のパッチにする明確な方法は見当たりません。私はまた、猿のパッチを当てるコアクラスは悪い考えであることに同意します。これは、これは、現在の機能を動作させることに関心があり、改善は一度に1つのステップで行くことができます。 – bigtunacan

関連する問題