2014-01-28 3 views
-1

В приложении Rails (4.1) я вызываю метод create_bound в нескольких классах (метод включен в ExtModule).Как получить прошедшие параметры

Метод занимает 2 Params: TASK_NAME и user_id

Есть ли способ узнать, какие параметры метод вызывается?

Например, имеющей код ниже

Class Event < ActiveRecord::Base 
    include ExtModule 

    ... 

    create_bound("Buy Milk", 1) 
    ... 
end 

Update 1

У меня есть второй класс под названием BoundRetriever

Class BoundRetriever 

    def self.get_bound(klass) 
    #Ruby magic happens here 
    end 
end 

и BoundRetriever.get_bound(Event) должен вернуться [ "купить молоко", 1 ]

Ho w могу определить get_bound?

Спасибо и хорошо провести день.

+0

, когда вы говорите: 'включают ModuleName' вас есть методы, доступные как методы экземпляра в классе, который вы включаете в модуль. Итак, почему вы не можете назвать 'create_bound (« Buy Milk », self)'? который отправит объект 'Event'' object'? У вас есть другие классы, которые называют этот метод в вашем коде? – Surya

+0

Наверное, я не был достаточно чист, мой плохой. Мне нужно знать параметры из второго объекта. См. Обновление 1 – macsig

+0

Прошу прощения. Я все еще не понял. Что вы подразумеваете под: 1, начиная с класса 'Event'? – Surya

ответ

0

Я думаю, что нет необходимости в классе BoundRetriever.

В вашем ext_module.rb:

module ExtModule 
    BOUND = [] 

    def create_bound(task_name, some_id) 
    BOUND.replace [task_name, some_id] 
    # rest of the code goes here.. 
    end 

    def get_bound 
    BOUND 
    end 
end 

и в моделях, как event.rb, вы можете позвонить:

Class Event < ActiveRecord::Base 
    include ExtModule 

    ... 

    create_bound("Buy Milk", 1) 
    ... 

    # call get_bound with the same object 
    get_bound #=> ["Buy Milk", 1] 
    ... 
end 
+0

Как я упоминал ранее, я использую create_bound в нескольких классах (один раз в каждом), и мне нужно иметь возможность получить параметры в '' 'BoundRetriever'' для каждого из них. Не уверен, что ваше решение работает в этом случае. – macsig

+0

, когда у вас есть create_bound в нескольких классах, у вас будет метод get_bound для всех этих классов отдельно, так как у вас есть константа для каждого и evert класс, в который вы включаете 'ExtModule'. Однако, если вы объясните мне ситуацию, что, если вы должны использовать класс BoundRetriever, я могу подумать о другом способе этого. – Surya

+0

Спасибо за ваш ответ. в основном для каждого класса, который вызывает '' 'create_bound''' Мне нужно знать пользователя, который передается как param.'' 'BoundRetriever''' не нужно использовать, но я думаю, это необходимо. – macsig

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