1

我想通过我的插件向角色模型添加after_create回调。所以我可以像往常一样添加一个。我可以通过在角色模型 中混合的模块中定义它来添加公共方法。但是我如何向角色模型添加私有方法以在回调中使用?after_callback :my_private_methodclass_evalInstanceMethods

my_private_methodafter_create

我知道这可以通过class_eval但有更好的解决方案来实现吗?

4

1 回答 1

2

哦,这真的很容易:

module RolePatch
  module InstanceMethods
    private    <<<<<<<<<<<<<<<<<<<<<<<<<<<<   It works like a charm.
    def my_private_method; end
  end

  def self.included(receiver)
    receiver.send :include, InstanceMethods

    receiver.class_eval do
      after_create :my_private_method
    end
  end
end

1.9.3p392 :017 > Role.first.private_methods.grep(/my_private_method/)
 => [:my_private_method]

InstanceMethods所以我们可以像往常一样在模块中使用私有修饰符。

于 2013-06-02T10:12:42.540 回答