ruby on rails - example - accediendo a idear usuario_actual dentro del modelo
devise wiki (3)
No es una buena forma de acceder al usuario_actual en un modelo, esta lógica pertenece al controlador. Pero si realmente no puede encontrar una solución, debería ponerla en un hilo. Pero ten en cuenta que esta no es la forma en que debería construirse.
http://rails-bestpractices.com/posts/47-fetch-current-user-in-models
hola, intento acceder a current_user dentro de un modelo con el fin de crear un elemento sobre la marcha con find_or_create_by.
el siguiente es el método dentro de mi modelo
def opponent_name=(name)
self.opponent = Opponent.find_or_create_by_name_and_team_id(name,current_user.team_id) if name.present?
end
pero el error que estoy recibiendo es
NameError in EventsController#create
undefined local variable or method `current_user'' for #<Event:0x007fb575e92000>
current_user
no es accesible desde los archivos de modelo en Rails, solo controladores, vistas y ayudantes.
Lo que debes hacer es pasar el current_user.team_id
al método opponent_name
esta manera:
def opponent_name=(name, current_user_team_id)
self.opponent = Opponent.find_or_create_by_name_and_team_id(name,current_user.team_id) if name.present?
end
Acceda a current_user en el archivo de modelo:
# code in Applcation Controller:
class ApplicationController < ActionController::Base
before_filter :global_user
def global_user
Comment.user = current_user
end
end
#Code in your Model File :
class Comment < ActiveRecord::Base
cattr_accessor :user # it''s accessible outside Comment
attr_accessible :commenter
def assign_user
self.commenter = self.user.name
end
end
Perdónenme si viola las Reglas de Arquitectura de MVC.