2

Ruby on Railsのbefore_filterメソッドを使用して、複数のことの1つが正しいことを確認することは可能ですか?具体的には、ユーザーと管理者を定義したDeviseを使用しており、特定のコントローラーにアクセスしているユーザーがどちらか一方であることを確認したいと思います。私はドキュメンテーションとSOで答えを探しましたが、運がありませんでした。

おかげで、ここに私のバージョンがあります(それが役立つ場合):

  • Ruby 1.9.3
  • Rails 3.2.6
  • 考案2.2.3
4

1 に答える 1

4

可能です。これよりも単純なことはないので、実際にこれを答えとして配置することを躊躇します。admin?ユーザーの役割に応じてtrueまたはfalseを返すメソッドがあると想定しています。

before_filter :check_if_admin

protected

def check_if_admin
  if signed_in?
    raise 'Only admins allowed!' unless current_user.admin?
  else
    # or you can use the authenticate_user! devise provides to only allow signed_in users
    raise 'Please sign in!'
  end
end
于 2013-02-24T12:48:12.100 に答える