我正在尝试路由设备用户,如果他们不是确定的用户类型

时间:2015-12-31 18:08:21

标签: ruby-on-rails ruby devise

这被认为是好的吗?我甚至不知道before_action占了一块但是确实如此。有没有更好的方法呢?

class AdminsController < ApplicationController
  before_action do
    :authenticate_admin!
    redirect_to retailer_dashboard_path if current_user.retailer?
    redirect_to supplier_dashboard_path if current_user.supplier?
  end

  def dashboard
    @admin = current_user
    @retailers = Retailer.all
    @suppliers = Supplier.all
  end


end

1 个答案:

答案 0 :(得分:2)

after_sign_in_path_for方法,您可以使用该方法推断每个用户角色的重定向网址。

def after_sign_in_path_for(resource)
  if resource.retailer?       
    retailer_dashboard_path
  elsif resource.supplier?      
    supplier_dashboard_path 
  else
    super
  end
end

这是重定向用户的Devise方式。 还有after_sign_out_path_for方法。