web-dev-qa-db-fra.com

Rails 4: before_filter vs. before_action

Dans Rails> 4.0.0, les générateurs créent des opérations CRUD avec before_action et non pas before_filter. Il semble faire la même chose. Alors, quelle est la différence entre ces deux? 

314
freemanoid

Comme nous pouvons voir dans ActionController::Base, before_action est simplement une nouvelle syntaxe pour before_filter.

Cependant, tous les before_filters syntax sont déconseillés dans Rails 5.0 et seront supprimés dans Rails 5.1

481
freemanoid

C'est juste la différence de syntaxe, dans l'application Rails, il y a CRUD et sept actions essentiellement par nom index , nouveau , créer , show , update , éditer , détruire .

Rails 4 permet aux développeurs de modifier la syntaxe before filter en avant l'action .

before_action call méthode avant les actions que nous déclarons, comme

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

set_event est une méthode qui appelle toujours avant show, update, edit et destroy.

63
Awais

C'est juste un changement de nom. before_action est plus spécifique, car il est exécuté avant une action.

30
Matthias

before_filter/before_action: signifie tout ce qui doit être exécuté avant l'exécution d'une action.

Les deux sont les même. ils ne sont que des pseudonymes les uns des autres car leur comportement est identique.

0
Pankaj Dhote

Pour déterminer la différence entre before_action et before_filter, nous devons comprendre la différence entre action et filtre.

Une action est une méthode d'un contrôleur vers laquelle vous pouvez router vers . Par exemple, votre page de création d'utilisateur peut être routée vers UsersController # new - new est l'action dans cette route.

Les filtres s'exécutent en fonction des actions du contrôleur - avant, après ou autour d'eux . Ces méthodes peuvent interrompre le traitement des actions en redirigeant ou en configurant des données communes pour chaque action du contrôleur.

Rails 4 -> _action

Rails 3 -> _filter

0
yusefu