你能在Rails模块中包含前后过滤器吗?

Bri*_*ong 5 ruby-on-rails

我想为两个模型添加一个方法,所以我创建了一个这样的模块,并将它包含在两个模型中.

module UserReputation
  def check_something
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

这工作得很好.然后我希望在所有这些模型上将该方法称为:after_create.如果我手动将它添加到所有模型,它可以工作,但我想要聪明并将其包含在模块中,如下所示:

module UserReputation
  after_create :check_something
  def check_something
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有什么方法可以实现这一点并干掉after_create吗?

gir*_*aff 11

尝试self.included,当模块混合到类中时调用它base:

module UserReputation
  def self.included(base)
    base.after_create :check_something
  end
end
Run Code Online (Sandbox Code Playgroud)