Rails 4: before_filter vs. before_action

En los Rails> 4.0.0 los generadores crean operaciones CRUD con before_action not before_filter . Parece hacer lo mismo. Entonces, ¿cuál es la diferencia entre estos dos?

Como podemos ver en ActionController::Base , before_action es solo una nueva syntax para before_filter .

Sin embargo, todas before_filters syntax before_filters están en desuso en Rails 5.0 y se eliminarán en Rails 5.1

Es solo diferencia de syntax, en la aplicación Rails hay CRUD, y siete acciones básicamente por nombre, índice , nuevo , crear , mostrar , actualizar , editar , destruir .

Rails 4 lo convierte en desarrollador amigable para cambiar la syntax antes del filtro a antes de la acción .

before_action llame al método antes de las acciones que declaramos, como

 before_action :set_event, only: [:show, :update, :destroy, :edit] 

set_event es un método que llamará siempre antes de mostrar, actualizar, editar y destruir.

Es solo un cambio de nombre. before_action es más específico, porque se ejecuta antes de una acción.

Para descubrir 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 puede dirigirse. Por ejemplo, su página de creación de usuarios puede enrutarse 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 ellos. Estos métodos pueden detener el procesamiento de acciones redireccionando o configurando datos comunes para cada acción en el controlador.

Rails 4 -> _action

Rails 3 -> _filter

before_filter / before_action: significa todo lo que se ejecutará antes de que se ejecute cualquier acción.

Ambos son lo mismo. son solo alias el uno para el otro ya que su comportamiento es el mismo.