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]