2010-11-24 8 views
0

ActiveRecord 3のクラス全体ではなく、単一のオブジェクトにbefore_validationコールバックを追加する方法は? rails3にあなたはもはや単なる問題のコールバックのためにという名前のモデル内のメソッドを定義することはできませんのでですActiveRecord 3のクラス全体ではなく、単一のオブジェクトにbefore_validationコールバックを追加する方法は?

module ObjExtend 
    def before_validation 
     p 'before_validation' 
     return super 
    end 
end 
obj.extend ObjExtend 

が、それは動作しませんもう

答えて

1

:AR 2で
私はこのようでした。あなたはbefore_validation :fooでそれらを宣言しなければなりません。(:fooはモデルクラスのインスタンスメソッドを参照しますが、procまたはクラスを渡すこともできます)。

..だからこれは理想的なソリューションではありませんが、それはあなたにいくつかのアイデアを与える必要があります:

obj = MyModel.first 
class << obj 
    before_validation :foo 
    def foo 
    p 'before_validation' 
    return super 
    end 
end 

このコードは、オブジェクトの「eigenclass」を開きます(この事のために様々な名前があります)、それかのように振る舞います元のクラスのコンテキストでした。

関連する問題