Rails 4:before_filterとbefore_action


340

rails> 4.0.0では、ジェネレーターはbefore_actionnot を使用してCRUD操作を作成しますbefore_filter。同じことをしているようです。では、これら2つの違いは何ですか?

回答:


521

わかるようActionController::Basebefore_actionはの新しい構文にすぎませんbefore_filter

ただし、すべてのbefore_filters構文Rails 5.0では非推奨であり、Rails 5.1では削除されます


42
一方では非推奨にするのは理にかなっていますが、もう一方ではRailsやRubyで1つのメソッドに複数のエイリアスを作成して、意味を失うことなくさまざまなコンテキストで使用できるようにすることをお勧めします。
freemanoid 2013年

4
4.2では非推奨ではありませんが、推奨されていないため、ドキュメントから削除します。edgeguides.rubyonrails.org/...
onetwopunch

17
それが落胆しているなら、なぜそれを非難しないのですか?ばか。
Grant Birchmeier、2015年

4
@JohnWhitley-廃止によりAPIが壊れることはありません。それが非推奨の全体的なポイントです。
Grant Birchmeier、2015

9
@JohnWhitley-スパムは理由があります。よく練られたプロジェクトは、非推奨の関数を使用ないことで非推奨の警告に対処する必要があります。
Grant Birchmeier、2015年

67

これは単なる構文の違いであり、railsアプリにはCRUDがあり、基本的に名前インデックス新規作成表示更新編集破棄による7つのアクションがあります

変更構文に4メイク、それは開発者に優しいRailsのフィルタの前行動する前に

before_actionは、宣言するアクションの前にメソッドを呼び出します。

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

set_eventは、表示、更新、編集、破棄の前に常に呼び出すメソッドです。


31

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


1

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

どちらも同じです。動作は同じなので、これらは互いの単なるエイリアスです。


-3

before_actionとbefore_filterの違いを理解するには、アクションとフィルターの違いを理解する必要があります。

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

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

Rails 4 –> _action

Rails 3 –> _filter

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.