Рельсы 4: before_filter против before_action

279

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

Теги:
crud
ruby-on-rails-4

4 ответа

421
Лучший ответ

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

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

  • 0
    Но они могут подумать об этом, когда Rails 4 станет стабильным ...
  • 42
    С одной стороны, амортизация имеет смысл, но, с другой стороны, в рельсах и в ruby рекомендуется использовать несколько псевдонимов для одного метода, чтобы вы могли использовать его в разных контекстах без потери смысла.
Показать ещё 10 комментариев
55

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

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

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

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

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

27

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

0

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

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

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

Рельсы 4 → _action

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню