你如何用Devise保护控制器动作?

Was*_*per 2 ruby ruby-on-rails devise

我正在使用Devise,用户既可以是管理员也可以不是(真,假).

有人可以帮我弄清楚如何保护控制器动作,例如:

  def new
    @post = Post.new
  end
Run Code Online (Sandbox Code Playgroud)

我知道Devise允许你通过在视图中使用来调用管理员,但是这可以在控制器中使用吗?:

if current_user.admin?
Run Code Online (Sandbox Code Playgroud)

提前致谢.

alo*_*ony 10

你可以这样简单地添加一个过滤器:

class YourController < ApplicationController
  before_filter :check_access, :only => :new

  ...

  def new
    @post = Post.new
  end

  protected
  def check_access
    redirect_to <whatever> and return unless current_user.admin?
  end
end
Run Code Online (Sandbox Code Playgroud)

或使用CanCan或类似的东西,很好地保持限制