Rails 4: antes del filtro vs. antes de la acción
En rails >4.0.0 los generadores crean operaciones CRUD con before_action
no before_filter
. Parece hacer lo mismo. ¿Cuál es la diferencia entre estos dos?
5 answers
Como podemos ver en ActionController::Base
, before_action
es solo una nueva sintaxis para before_filter
.
Sin embargo, todas las sintaxis before_filters
están en desuso en Rails 5.0 y se eliminarán en Rails 5.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-12 05:13:32
Es sólo la sintaxis de diferencia, en aplicación rails hay CRUD, y siete acciones, básicamente, por el nombre de índice, nuevo, crear, mostrar, actualización, editar, destruir.
Rails 4 hace que sea fácil para el desarrollador cambiar la sintaxis antes del filtro a antes de la acción.
Before_action método de llamada antes de las acciones que declaramos, como
before_action :set_event, only: [:show, :update, :destroy, :edit]
Set_event es un método que se llame siempre antes de mostrar, actualizar, editar y destruir.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-06 13:31:58
Es solo un cambio de nombre. before_action
es más específico, porque se ejecuta antes de una acción.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-24 16:22:41
Para averiguar cuál es la diferencia entre before_action y before_filter, debemos entender la diferencia entre acción y filtro.
Una acción es un método de un controlador al que se puede dirigir. Por ejemplo, su página de creación de usuarios puede ser enrutada a UsersController#new-new es la acción en esta ruta.
Los filtros se ejecutan con respecto a las acciones del controlador - antes, después o alrededor de ellas. Estos métodos pueden detener el procesamiento de acciones redirigiendo o configurando datos comunes a cada acción en el controlador.
Rails 4 - > _action
Rails 3 - > _filter
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-06 05:51:41
Before_filter/before_action: significa cualquier cosa que se debe ejecutar antes de que se ejecute cualquier acción.
Ambos son iguales. son solo alias el uno para el otro, ya que su comportamiento es el mismo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-30 10:52:23