sesiones rails logger log ruby-on-rails ruby

ruby on rails - logger - Rails Variable en todas las acciones del controlador



rails logger (2)

Puede agregar un before_filter a su ApplicationController que establece la variable de administración antes de llamar a cualquier acción y puede limitarla solo a las acciones que necesita.

class ApplicationController < ActionController::Base ... before_filter :set_admin def set_admin @administration = Administration.first end ..

http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html

Esta debería ser una pregunta muy simple. Tengo una variable como la siguiente.

@administration = Administration.first

Quiero que esta variable sea accesible a través de cada acción del controlador en todos mis controladores, por ejemplo, si tengo un controlador de Producto y dentro de él tengo las acciones CRUD habituales, quiero que la variable @administration como se define arriba se incluya en todos los Acciones de CRUD. (No sería necesario en destruir o crear o actualizar). Tengo muchos controladores a lo largo de mi proyecto y me preguntaba si hay una forma más fácil que agregarlo manualmente a través de todas las acciones en las que lo quiero.

Probé una variable global

$administration = Administration.first

pero me encuentro con un problema en el que no se actualiza cuando actualizo el contenido real de la tabla Administration.first. Además, me gustaría evitar las variables globales.

Cualquier ayuda sería muy apreciada. ¡Gracias! :)


Solo extendiendo el post de Christos ...

Si no desea que se pueda acceder a @administration para destruir, crear y actualizar las acciones del controlador, agregue: except =>: action a before_filter de esta forma:

before_filter :set_admin, :except => [:create, :update, :destroy]

En Rails 4 y 5 before_filter está en desuso. Puedes usar esto en su lugar:

before_action: set_admin, excepto: [: create,: update,: destroy]