プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

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オプションが存在し、指定されたアクション以外でフィルターが適用されるような書き方もできます。