Рейки 4: до_фільтра проти перед запуском


340

У рейках> 4.0.0 генератори створюють CRUD-операції з before_actionне before_filter. Здається, те саме робиш. То яка різниця між цими двома?

Відповіді:


521

Як ми бачимо в ActionController::Base, before_actionце лише новий синтаксис для before_filter.

Однак усі before_filtersсинтаксиси застаріли в Rails 5.0 і будуть видалені в Rails 5.1


42
З одного боку, депресація має сенс, але з іншого є хороша практика в рейках і в рубіні мати кілька псевдонімів для одного методу, щоб ви могли використовувати його в різних контекстах без втрати сенсу.
freemanoid

4
В 4.2 Вони не знецінюють її, а видаляють її з документів, оскільки вона не перешкоджає. edgeguides.rubyonrails.org/…
onetwopunch

17
Якщо це не відлякує, то чому б ви не знехтували? Нерозумно.
Грант Бірхмайер

4
@JohnWhitley - анулювання не порушує API. У цьому вся суть зневаги.
Грант Бірхмайєр

9
@JohnWhitley - спам - це не просто так. Будь-який добре дисциплінований проект повинен вирішувати попередження про депресію, не використовуючи застарілі функції .
Грант Бірхмейер

67

Це просто різниця в синтаксисі, в додатку rails є CRUD, і сім дій в основному за індексом імен , нове , створення , показ , оновлення , редагування , знищення .

Rails 4 дозволяє розробнику зручно змінювати синтаксис перед фільтруванням до дії .

перед тим, як запустити метод виклику перед діями, які ми заявляємо, як

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

set_event - це метод, який зателефонує завжди до показу, оновлення, редагування та знищення.


31

Це просто зміна імені. before_actionє більш конкретним, оскільки він виконується перед дією.


1

before_filter / перед запуском: означає що-небудь виконати перед виконанням будь-якої дії.

Обидва однакові. вони просто псевдонім один для одного, оскільки їх поведінка однакова.


-3

Щоб розібратися, в чому різниця між запусками та before_filter, нам слід зрозуміти різницю між дією та фільтром.

Дія - це метод контролера, до якого можна перейти. Наприклад, ваша сторінка створення користувачів може бути перенаправлена ​​на UsersController # new - дія цього маршруту.

Фільтри запускаються стосовно дій контролера - до, після або навколо них. Ці методи можуть зупинити обробку дій шляхом перенаправлення або встановлення загальних даних для кожної дії в контролері.

Рейки 4 -> _дія

Рейки 3 -> _фільтр

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.