2013-12-12 66 views
0

嗨,也許這是一個傻瓜的問題,也有很多帖子的信息,但我不明白,因爲IM的學習軌道..驗證在設計上的其他控制器

我有此控制器,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 

控制器還Registratons控制器

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 

我怎麼能作出這樣的domain.com/posts/new僅僅是供管理員,但domain.com/posts是開放的給大家..

另外我看到有管理員的意見...我如何使domain.com/admin/posts/new工作?

任何文檔都不錯,但也是一個解釋,因爲我說,我只是學習rails。

感謝

回答

1

使用:except

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

非常感謝您的幫助,我在哪裏必須設置該行..在DEF內posts_controller,或之前所有的人..怎麼做這工作,需要了解。 –

+0

語法錯誤,意外的tFID –

+0

是的,沒錯,就像您使用secure_controller一樣。 before_filter工作前置條件驗證器,例如,當用戶調用show動作時,您的帖子控制器將首先調用authenticate_user!以查看用戶是否已登錄。before_filter需要幾個選項來有條件地驗證某個操作。查看[docs](http://apidock.com/rails/ActionController/Filters/ClassMethods/before_filter)以獲取更多信息 – rb512