考虑我有模型用户,帐户和产品。我想要一个共同的after_create回调,所有这些模型都说log_creation。
我该怎么做?
答案 0 :(得分:3)
您可以拥有global
并将其包含在您希望的任何模型中
GenericModule
在模型中
module GenericModule
extend ActiveSupport::Concern
included do
after_create :log_creation
end
def log_creation
# perform logging
end
end
您可以在需要此行为的所有模型中使用此功能。
答案 1 :(得分:0)
来自ActiveRecord Callbacks上的Ruby on Rails指南:
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
当在类中声明时,如上所述,回调方法将接收模型对象作为参数。我们现在可以在模型中使用回调类:
class PictureFile < ActiveRecord::Base
after_destroy PictureFileCallbacks.new
end