我想通过我的插件向角色模型添加after_create
回调。所以我可以像往常一样添加一个。我可以通过在角色模型
中混合的模块中定义它来添加公共方法。但是我如何向角色模型添加私有方法以在回调中使用?after_callback :my_private_method
class_eval
InstanceMethods
my_private_method
after_create
我知道这可以通过class_eval
但有更好的解决方案来实现吗?
我想通过我的插件向角色模型添加after_create
回调。所以我可以像往常一样添加一个。我可以通过在角色模型
中混合的模块中定义它来添加公共方法。但是我如何向角色模型添加私有方法以在回调中使用?after_callback :my_private_method
class_eval
InstanceMethods
my_private_method
after_create
我知道这可以通过class_eval
但有更好的解决方案来实现吗?
哦,这真的很容易:
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
所以我们可以像往常一样在模块中使用私有修饰符。