1

Я хочу добавить after_create Обратный вызов Роль модель моего плагина. Поэтому я могу добавить after_callback :my_private_method на class_eval, как обычно. Я могу добавить публичный метод, определив его в InstanceMethods в модуле, который смешивается в . Роль.

Но как я могу добавить частный метод my_private_method в Роль модель для использования в after_create callback?Добавить частный метод в класс mixin

Я знаю, что это может быть реализовано class_eval, но есть ли более приятное решение?

ответ

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 как обычно.

Смежные вопросы