В rails> 4.0.0 генераторы создают операции CRUD с before_action
not before_filter
. Кажется, делает то же самое. Так в чем же разница между этими двумя?
В rails> 4.0.0 генераторы создают операции CRUD с before_action
not before_filter
. Кажется, делает то же самое. Так в чем же разница между этими двумя?
Ответы:
Как мы можем видеть в ActionController::Base
, before_action
это просто новый синтаксис для before_filter
.
Однако весь before_filters
синтаксис устарел в Rails 5.0 и будет удален в Rails 5.1
Это просто синтаксическая разница, в приложении rails есть CRUD, и семь действий в основном по индексу имен , new , create , show , update , edit , destroy .
Rails 4 сделать его разработчик дружественного к синтаксису изменения перед фильтром , чтобы перед действием .
before_action вызывает метод перед действиями, которые мы объявляем, например
before_action :set_event, only: [:show, :update, :destroy, :edit]
set_event - это метод, который будет вызываться всегда перед показом, обновлением, редактированием и уничтожением.
before_filter / before_action: означает что-либо, что должно быть выполнено перед выполнением любого действия.
Оба одинаковы. они просто псевдонимы друг для друга, так как их поведение одинаково.
Чтобы выяснить, в чем разница между before_action и before_filter, мы должны понять разницу между action и filter.
Действие - это метод контроллера, к которому вы можете направить маршрут. Например, ваша страница создания пользователя может быть перенаправлена на UsersController # new - new - это действие на этом маршруте.
Фильтры работают относительно действий контроллера - до, после или вокруг них. Эти методы могут остановить обработку действия, перенаправив или настроив общие данные для каждого действия в контроллере.
Rails 4 -> _action
Rails 3 -> _filter