Rails 4: before filter vs. before action
W rails >4.0.0 Generatory generują operacje CRUD z before_action
nie before_filter
. Wydaje się, że robi to samo. Więc jaka jest różnica między tymi dwoma?
5 answers
Jak możemy zobaczyć w ActionController::Base
, before_action
jest tylko nową składnią dla before_filter
.
Jednak wszystkie before_filters
składnia są przestarzałe w Rails 5.0 i zostaną usunięte w Rails 5.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-12 05:13:32
To tylko różnica w składni, w aplikacji rails jest CRUD, a siedem akcji w zasadzie po nazwie index, Nowe, Utwórz, Pokaż, Aktualizacja, edytuj, destroy .
Rails 4 sprawia, że jest przyjazny dla programistów, aby zmienić składnię przed filtrem na przed działaniem.
Before_action wywołanie metody przed działaniami, które deklarujemy, jak
before_action :set_event, only: [:show, :update, :destroy, :edit]
Set_event {[3] } jest metodą, która wywoła zawsze przed pokazaniem, aktualizacją, edycją i zniszczeniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-06 13:31:58
To tylko zmiana nazwy. before_action
jest bardziej konkretna, ponieważ jest wykonywana przed akcją.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-24 16:22:41
Aby dowiedzieć się jaka jest różnica między before_action a before_filter, powinniśmy zrozumieć różnicę między action a filter.
Akcja jest metodą kontrolera, do którego można się dostać. Na przykład, Twoja strona tworzenia użytkownika może zostać przekierowana do UsersController#new - NEW jest akcją w tej trasie.
Filtry działają w odniesieniu do akcji kontrolera - przed, po lub wokół nich. Metody te mogą zatrzymać przetwarzanie akcji poprzez przekierowanie lub skonfigurowanie wspólne dane dla każdej akcji w kontrolerze.
Rails 4 –> _action
Rails 3 - > _filter
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 05:51:41
Before_filter / before_action: oznacza wszystko, co ma być wykonane przed wykonaniem jakiejkolwiek akcji.
Oba są takie same. są dla siebie tylko aliasem, ponieważ ich zachowanie jest takie samo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-30 10:52:23