Rails> 4.0.0では、ジェネレータはbefore_action
ではなくbefore_filter
でCRUD操作を作成します。同じことをしているようです。それで、これら二つの違いは何ですか?
ActionController::Base
の を参照、before_action
は単なる before_filter
の新しい構文 を参照)。
ただし、すべてのbefore_filters
構文 廃止予定の はRails 5.で、Rails 5.1では削除される予定です。
RailsアプリにはCRUDがあり、基本的にはindex、newの7つのアクションがあります。 、create、show、update、edit、destroy。
Rails 4では開発者にとって使いやすい構文をフィルタの前にをアクションの前に変更することができます。
before_action宣言したアクションの前にmethodを呼び出します。
before_action :set_event, only: [:show, :update, :destroy, :edit]
set_eventは、show、update、edit、およびdestroyの前に必ず呼び出されるメソッドです。
名前の変更です。 before_action
はアクションの前に実行されるため、より具体的です。
before_filter/before_action:アクションが実行される前に実行されるものを意味します。
両方とも同じです。それらの振る舞いは同じなので、それらはお互いの単なる別名です。
Before_actionとbefore_filterの違いは何かを理解するために、actionとfilterの違いを理解する必要があります。
アクションとは、ルーティング先のコントローラのメソッドです。たとえば、ユーザー作成ページがUsersController#newにルーティングされているとします。このルートのアクションはnewです。
フィルタはコントローラのアクションに関して、その前後、前後に実行されます。これらのメソッドは、コントローラ内のすべてのアクションに共通のデータをリダイレクトまたは設定することで、アクション処理を中止できます。
レール4 - > _action
レール3 - > _filter