Rails 4: before_filter vs. before before


Odpowiedzi:


521

Jak możemy zobaczyć w ActionController::Base, before_actionjest po prostu nowa składnia dla before_filter.

Jednak cała before_filtersskładnia jest przestarzała w Rails 5.0 i zostanie usunięta w Rails 5.1


42
Z jednej strony wycofywanie ma sens, ale z drugiej strony istnieje dobra praktyka w szynach i ruby, aby mieć kilka aliasów dla jednej metody, dzięki czemu można jej używać w różnych kontekstach bez utraty znaczenia.
freemanoid

4
W 4.2 Nie deprecjonują go, ale usuwają go z dokumentów, ponieważ jest to odradzane. edgeguides.rubyonrails.org/…
onetwopunch

17
Jeśli jest to zniechęcone, to dlaczego byś tego nie zrobił ? Głupi.
Grant Birchmeier,

4
@JohnWhitley - wycofanie nie psuje interfejsu API. To jest cały punkt rezygnacji.
Grant Birchmeier,

9
@JohnWhitley - spamowanie jest z jakiegoś powodu. Każdy dobrze zdyscyplinowany projekt powinien uwzględniać ostrzeżenia o wycofaniu, nie używając przestarzałych funkcji .
Grant Birchmeier

67

To tylko różnica w składni, w aplikacji Railsowej jest CRUD i siedem akcji w zasadzie według indeksu nazw , nowe , tworzenie , pokazywanie , aktualizacja , edycja , niszczenie .

Railsy 4 ułatwiają programistom zmianę składni przed filtrowaniem na przed działaniem .

Metoda wywołania before_action przed czynnościami, które deklarujemy, jak

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

set_event to metoda, która będzie wywoływać zawsze przed pokazaniem, aktualizacją, edycją i zniszczeniem.


31

To tylko zmiana nazwy. before_actionjest bardziej szczegółowy, ponieważ jest wykonywany przed akcją.


1

before_filter / before_action: oznacza wszystko, co należy wykonać przed wykonaniem jakiejkolwiek akcji.

Oba są takie same. są dla siebie tylko aliasami, ponieważ ich zachowanie jest takie samo.


-3

Aby dowiedzieć się, jaka jest różnica między przed aktywnością a przed_ filtrem, powinniśmy zrozumieć różnicę między akcją a filtrem.

Akcja to metoda kontrolera, do której można kierować. Na przykład strona tworzenia użytkownika może być przekierowana do UsersController # new - nowa jest akcja na tej trasie.

Filtry działają w odniesieniu do działań kontrolera - przed nimi, po nich lub wokół nich. Te metody mogą zatrzymać przetwarzanie akcji poprzez przekierowanie lub skonfigurowanie wspólnych danych dla każdej akcji w kontrolerze.

Szyny 4 -> _action

Szyny 3 -> _filter

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.