在其他控制器上验证Devise

时间:2013-12-12 21:58:58

标签: ruby-on-rails ruby ruby-on-rails-3 devise

嗨,也许这是一个愚蠢的问题,很多帖子都有信息,但我不明白,因为我正在学习铁路..

我制作了这个控制器,posts_controller.rb

def index
    @posts = Post.all
end 

def show
  @post = Post.find(params[:id])
end


def create
  @post = Post.new(params[:post])
  @post.save
  redirect_to @post
end


def new
end

end

现在这是公开的..我怎么能只为管理员做这个,我使用设计。这是>的控制器。 SecureController

class SecureController < ApplicationController

  before_filter :authenticate_user!

  authorize_resource

  def has_role?(current_user, role)
    return !!current_user.roles.find_by_name(role)
  end

  rescue_from CanCan::AccessDenied do |exception|
    render :file => "#{Rails.root}/public/403.html", :status => 403, :layout => false
  end

end

也是注册人控制器

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    if current_user.user_type == 'player'
      player_steps_path
    elsif current_user.user_type == 'coach'
      coach_steps_path
    elsif current_user.user_type == 'elite'
      candidates_path
    end
  end
end

我如何才能使域名/ postts/new仅供管理员使用,但域名/域名对所有人开放..

此外,我看到有管理员的观点...我怎样才能使domain.com/admin/posts/new起作用?

任何文档都会很好,但也是一个解释,因为我说,我只是在学习rails。

感谢

1 个答案:

答案 0 :(得分:1)

使用:except

before_filter :authenticate_user!, :except => [:new]