2015-09-22 40 views
1

我制作了一个包含3种类型的用户功能表:admin,bidder,seacher。在签署时设置用户角色

user ||= User.new # guest user (not logged in) 
    can :read, :all 
    can :manage, Job do |job| 
    job.try(:user) == user 
    end 
    if user.admin? 
    can :manage, :all 
    elsif 
    user.has_role? :bidder 
    can :manage, Job, :user => {user_id: user.id} 
    elsif 
    user.has_role? :searcher 
    can :read, :all 

    end 

而且在我pages_controller我做了这个

def home 
    if current_user 
     redirect_to jobs_path 
    end 

     @searcher_plan = Plan.find(1) 
     @bidder_plan = Plan.find(2) 
    end 

我怎样才能使它在登入时联想到的角色?我tryed这一点,但它不工作

<%= link_to "Bidder Account", new_user_registration_path(plan: @bidder_plan.id) %> 
+0

用户和计划之间的关联是什么? – Pavan

回答

1

我不明白你想要什么,但根据你的问题标题,你可以创建自己的回调:

# app/controllers/your_sessions_controller.rb 
class YourSessionsController < Devise::SessionsController 
    after_login :set_role, only: :create 

    def set_role 
    # do here what you need 
    end 
end