he definido método en el ApplicationControllerCómo llamar a los métodos definidos en ApplicationController en modelos
class ApplicationController < ActionController::Base
helper_method :get_active_gateway
def get_active_gateway(cart)
cart.account.gateways
end
end
Cuando yo estoy llamando a este método en el modelo
class Order < ActiveRecord::Base
def transfer
active= get_active_gateway(self.cart)
end
end
Es error undefined local variable get_active_gateway
tirar.
Así que escribió
class Order < ActiveRecord::Base
def transfer
active= ApplicationContoller.helpers.get_active_gateway(self.cart)
end
end
Luego se estaba lanzando error undefined method nil for Nilclass
.
Estoy trabajando en Rails 3.2.0.
Como las dos respuestas dijo que no se debe llamar a los métodos de controlador de sus modelos. No es recomendado Lea en Model View Controller (MVC). Para mantener las cosas independientes. Básicamente Model habla con el almacenamiento, el controlador habla con el modelo (no al revés) y ve las conversaciones con el controlador. –
Debido al diseño de Rails, y al eliminar la posibilidad de llamar a ApplicationController.helpers (ahora), debe "repetirlo" con una definición de código dup en el modelo. Asegúrese de agregar un comentario en ambos lugares, de modo que si lo cambia en un lugar, recuerda ir y cambiarlo en el otro. – JosephK