2009-11-24 3 views
1

В настоящее время у меня есть это:Как передать параметры Rails "delegate"?

 
class Group < ActiveRecord::Base 

    delegate :publish_group_creation, :to => 'MyAppModules::Publisher' 
    after_create :publish_group_creation 

end 

Дело в том, что Publisher.publish_group_creation получает 1 аргумент (группа, которая собирается быть опубликованы)

Я пытался что-то вроде этого;

delegate :publish_group_creation, :to => 'MyAppModules::Publisher', :group => self

, но он не работает, то, что правильный способ передачи параметров с помощью delegate?

ответ

0

Методы, вызванные через обратные вызовы, не получают параметры в Rails.

Попробуйте это:

class Group < ActiveRecord::Base 
    after_create :publish_group 

    private 
    def publish_group 
    MyAppModules::Publisher.publish_group_creation(self) 
    end 
end 
+0

Если методы издателе модуля будут все применимы к вашей модели группы, то вы хотите, чтобы пойти с ответом Майка. Я предполагал, что группа и издатель в основном не связаны. – PreciousBodilyFluids

+0

Спасибо, вот как мой код в настоящее время, было бы неплохо, если бы мы смогли передать их inline! – jpemberthy

0

Я не уверен, что это сработает для вашего сценария, но вы можете попробовать немного переделать его. Что-то вроде

module MyAppModules::Publisher 
    def publish_group_creation 
    ... 
    end 
end 

class Group < ActiveRecord::Base 

    include MyAppModules::Publisher 

    after_create :publish_group_creation 

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