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?

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


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.


31

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


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.


-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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.