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?

Author: Andrei Eliade, 2013-05-13

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

 469
Author: freemanoid,
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.

 60
Author: Awais,
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.

 29
Author: Mattherick,
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

 0
Author: yusefu,
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.

 0
Author: Pankaj Dhote,
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