before_filterを使用した認可の定義
特定の状態でしかアクションを許したくない場合
例えば、ユーザーが自分のアカウントにログイン場合のみに、そのユーザー情報を書き換える操作を許す。等、認可にかかわるbefore_filterメソッドの使い方をまとめます。
早速コード
ごくごくシンプルに書けます。 アクションメソッドが実行される前に、signed_in_userを実行します。 sined_in_userは、ユーザーがサインイン状態でない場合、サインインページまで転送するメソッドになります。
class UsersController < ApplicationController before_filter :signed_in_user, only: [:edit, :update] . . end
今回は、onlyオプションを使用していますので、edit,updateアクションのみにフィルターが適用されます。 showメソッドなどを含めないのは、閲覧するだけであれば、どんなユーザーでも可能としているアプリケーションの作りによるものです。状況によってまちまちなので、使い分けをしてみると良いかと思います。 他にも、expectオプションが存在し、指定されたアクション以外でフィルターが適用されるような書き方もできます。