В rails > 4.0.0 генераторы создают CRUD-операции с before_action
not before_filter
. Кажется, он делает то же самое. Так какая разница между этими двумя?
Rails 4: before_filter против before_action
Ответ 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 вызывается при вызове методов контроллера, которые зарегистрированы в файле конфигурации маршрутов.