Rails 4: before_filter против before_action

В rails > 4.0.0 генераторы создают CRUD-операции с before_action not before_filter. Кажется, он делает то же самое. Так какая разница между этими двумя?

Ответ 1

Как мы можем видеть в ActionController::Base, before_action - это просто новый синтаксис для before_filter.

Однако все before_filters синтаксис устарели в Rails 5.0 и будут удалены в Rails 5.1

Ответ 2

Это просто разница в синтаксисе, в приложении rails есть CRUD и семь действий в основном по имени index, new, create, показать, обновить, изменить, уничтожить.

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

before_action вызывать метод перед объявляемыми вами действиями, например

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

set_event - это метод, который будет вызывать всегда перед показом, обновлением, редактированием и уничтожением.

Ответ 3

Это просто изменение имени. before_action более конкретный, поскольку он выполняется перед действием.

Ответ 4

Чтобы выяснить, в чем разница между before_action и before_filter, мы должны понимать разницу между действием и фильтром.

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

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

Рельсы 4 → _action

Рельсы 3 → _фильтр

Ответ 5

before_filter/before_action: означает что-либо, что должно быть выполнено перед выполнением какого-либо действия.

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

Ответ 6

before_filter вызывается всякий раз, когда вызывается любой метод в контроллере.

before_action вызывается при вызове методов контроллера, которые зарегистрированы в файле конфигурации маршрутов.