Подтвердить что ты не робот

Как вызвать методы, определенные в ApplicationController в моделях

Я определил метод в ApplicationController

class ApplicationController < ActionController::Base
   helper_method :get_active_gateway
   def get_active_gateway(cart)
     cart.account.gateways
   end
end

Когда я вызываю этот метод в модели

class Order < ActiveRecord::Base
   def transfer
     active= get_active_gateway(self.cart)
   end
end

Выбрасывает ошибку undefined local variable get_active_gateway.

Итак, я написал

class Order < ActiveRecord::Base
   def transfer
    active= ApplicationContoller.helpers.get_active_gateway(self.cart)
   end
end

Затем он выбрасывал error undefined method nil for Nilclass.

Я работаю в Rails 3.2.0.

4b9b3361

Ответ 1

Зачем вам это нужно? Модель не должна знать о своих контроллерах. Возможно, редизайн вашей системы будет более уместным в этом случае.

Вот ссылка на аналогичный поток.

Ответ 2

Как выбор дизайна, его не рекомендуется вызывать контроллеры контроллера из ваших моделей.

Вы можете просто передать необходимые данные своим методам модели в качестве аргументов.

def transfer(active_gateway)
  active = active_gateway
end