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