Рельсы 4: перед фильтром против перед действием


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

5 306

5 ответов:

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

все before_filters синтаксис не рекомендуется на рельсы 5.0 и будет удален в рельсы 5.1

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

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

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

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

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

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

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

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

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

рельсы 4 –> _action

рельсы 3 –> _filter

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

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