2017-08-01 9 views

答えて

1

あなたはどのモデルでこれをGenericModuleがあり、含めることができるモデルで

class User < ActiveRecord::Base 
    include GenericModule 

    # ...other model code... 
end 

ますこの動作が必要なすべてのモデルでこれを使用できます。

+0

モジュールはlibにありますか? – PiKaY

+0

@PiKaY https://stackoverflow.com/questions/4013486/ruby-on-rails-where-should-i-store-modules – Kavincat

+0

@Kavincatありがとうございます。 – PiKaY

0

Active Recordは、コールバックメソッドをカプセル化するクラスを作成することが可能となるので、それらを再利用することが非常に容易になります。ここで

たちはPictureFileモデルのafter_destroyコールバックを持つクラスを作成する例を示します:クラス内で宣言すると

class PictureFileCallbacks 
    def after_destroy(picture_file) 
    if File.exists?(picture_file.filepath) 
     File.delete(picture_file.filepath) 
    end 
    end 
end 

、上記のように、コールバックメソッドは、パラメータとしてモデルオブジェクトを受け取ります。現在のモデルでは、コールバッククラスを使用することができます:あなたは

module GenericModule 
    extend ActiveSupport::Concern 

    included do 
    after_create :log_creation 
    end 

    def log_creation 
    # perform logging 
    end 
end 

を望むと

class PictureFile < ActiveRecord::Base 
    after_destroy PictureFileCallbacks.new 
end 
関連する問題