web-dev-qa-db-ja.com

レール4:before_filterとbefore_action

Rails> 4.0.0では、ジェネレータはbefore_actionではなくbefore_filterでCRUD操作を作成します。同じことをしているようです。それで、これら二つの違いは何ですか?

322
freemanoid

ActionController::Base を参照、before_actionは単なる before_filterの新しい構文 を参照)。

ただし、すべてのbefore_filters構文 廃止予定のRails 5.で、Rails 5.1では削除される予定です。

491
freemanoid

RailsアプリにはCRUDがあり、基本的にはindexnewの7つのアクションがあります。 、createshowupdateeditdestroy

Rails 4では開発者にとって使いやすい構文をフィルタの前にをアクションの前に変更することができます。

before_action宣言したアクションの前にmethodを呼び出します。

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

set_eventは、show、update、edit、およびdestroyの前に必ず呼び出されるメソッドです。

63
Awais

名前の変更です。 before_actionはアクションの前に実行されるため、より具体的です。

30
Matthias

before_filter/before_action:アクションが実行される前に実行されるものを意味します。

両方とも同じです。それらの振る舞いは同じなので、それらはお互いの単なる別名です。

0
Pankaj Dhote

Before_actionとbefore_filterの違いは何かを理解するために、actionとfilterの違いを理解する必要があります。

アクションとは、ルーティング先のコントローラのメソッドです。たとえば、ユーザー作成ページがUsersController#newにルーティングされているとします。このルートのアクションはnewです。

フィルタはコントローラのアクションに関して、その前後、前後に実行されます。これらのメソッドは、コントローラ内のすべてのアクションに共通のデータをリダイレクトまたは設定することで、アクション処理を中止できます。

レール4 - > _action

レール3 - > _filter

0
yusefu