Rieles 4: before_filter vs. before_action

340

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

freemanoid
fuente

Respuestas:

521

Como podemos ver en ActionController::Base, before_actiones solo una nueva sintaxis para before_filter.

Sin embargo, toda la before_filterssintaxis está en desuso en Rails 5.0 y se eliminará en Rails 5.1

freemanoid
fuente
42
Por un lado, el despreciar tiene sentido, pero por otro lado, hay una buena práctica en los rieles y en el rubí para tener varios alias para un método para que pueda usarlo en diferentes contextos sin pérdida de significado.
freemanoid
44
En 4.2 No lo están despreciando, sino que lo eliminan de los documentos, ya que se desaconseja. edgeguides.rubyonrails.org/…
onetwopunch
17
Si se desalienta, ¿por qué no lo desaprobarías? Tonto.
Grant Birchmeier
44
@JohnWhitley: la degradación no rompe la API. Ese es todo el punto de desaprobación.
Grant Birchmeier
99
@JohnWhitley: el envío de spam es por una razón. Cualquier proyecto bien disciplinado debe abordar las advertencias de desaprobación al no utilizar funciones desaprobadas .
Grant Birchmeier
67

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

4 carriles que hacen desarrollador amigable a la sintaxis cambio antes del filtro de antes de la acción .

método de llamada before_action 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.

Awais
fuente
31

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

Matías
fuente
1

before_filter / before_action: significa cualquier cosa 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.

Pankaj Dhote
fuente
-3

Para descubrir cuál es la diferencia entre before_action y before_filter, debemos entender la diferencia entre action y filter.

Una acción es un método de un controlador al que puede dirigirse. Por ejemplo, su página de creación de usuarios podría 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 la acción al redirigir o configurar datos comunes para cada acción en el controlador.

Rieles 4 -> _acción

Rieles 3 -> _filtro

yusefu
fuente