Un modelo no puede leer una variable session?

Saludos,

Tenia en una variable de session (session[:user_id) almacenado el id
del usuario para así poder controlarlo entre los distintos
controllers, pero resulta que si un modelo por el motivo “x” requiere
saber ese valor indica el error “session no es un método definido”

Les pongo un trozo de código para ver si así se ve mejor lo que quiero
tratar de hacer

class Post < ActiveRecord::Base

after_save :show_msg

def show_msg
logger.info( “usuario_id #{session[:user_id]} acaba de insertar
un registro” )
end
end

Sabes si es posible pasarle el valor session[:user_id] al modelo? o
podrían orientarme para, si no es posible, realizarlo de otra manera.

Muchas gracias.
Un saludo.

No se como tienes definidos los modelos, pero posiblemente tendras
algo como

 class Post < ActiveRecord::Base

     belongs_to :user

 end

De manera que puedes hacer …

 class Post < ActiveRecord::Base

     belongs_to :user

     after_save :show_msg

     def show_msg
        logger.info("usuario_id #{user_id} acaba de insertar un

registro")
end

 end

Un saludo,

Francesc

Gracias Francesc, el tema es que Post no esta relacionado directamente
con Users de hay el lío :stuck_out_tongue: estaba jugando con las relaciones
polimorficas por eso Post y User tienen una tabla “relaciónes” que les
une.

Voy a seguir dandole vueltas.
Gracias.

El 20/05/2008, a las 20:29, Francesc E.
escribió:

a mi personalmente no me gusta el acceder a la sesión desde el modelo de
datos, ya que entiendo que éste deber ser lo más ‘agnóstico’ posible en
cuanto al tipo de aplicación en el que está viviendo. si necesitas saber
el valor de esta variable, yo se la asignaría desde el propio
controlador, pero no pedirla directamente desde
ahí.aunque ya se sabe, que para gustos, los colores…

salud!

alarkspur
escribió:> Saludos,

Muchas gracias.
Un saludo.


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


/**

Si como dice Borja Martin porque no pones en el modelo un

attr_accessor :user_id

asi no se grabara en bd pero es una propiedad del modelo

entonces en el controlador pones

modelo.user_id = session[:user_id]

o algo similar, y ya tendrias ese atributo con el dato requerido desde
el
modelo

pero bueno suerte con eso

Ing. Omar S. Jimenez Becerra

El día 20/05/08, Borja Martín [email protected] escribió:

“For fuck’s sake, STOP asking this question in IRC”
“You’re completely/totally/fucking wrong if you want to access
sessions, params, cookies, etc. in your Models.”

http://m.onkey.org/2007/10/17/how-to-access-session-cookies-params-request-in-model

Pues eso, que si se puede, pero es feo, muy feo.

Un saludo,

Francesc

Muchas gracias a todos por las opiniones y ayuda. Con lo maniático que
soy y leyendo vuestras opiniones al final he re-hecho el “ejercicio”
de nuevo y esta solucionado con un before_filter en el controlador,
aunque aun no me convence :stuck_out_tongue: … seguiré dandole vueltas.

Lo dicho, muy amables, gracias.
Un saludo.

El 21/05/2008, a las 0:59, Francesc E.
escribió:

Gracias Borja por tu
opinión

a mi personalmente no me gusta el acceder a la sesión desde el
modelo de
datos

¿pero es posible? yo por mas vueltas que le he dado no me ha sido
posible.

si necesitas saber el valor de esta variable, yo se la asignaría
desde el propio
controlador,

En un principio lo tenia realizado desde el controlador como indicas
pero no me terminaba de convencer, así con el modelo, aunque no ha ido
bien :stuck_out_tongue:

Saludos