2016-03-02 109 views
0

我的应用程序中有两个模型,User和Admin。所以,我把这些代码放在我的应用程序控制器中:重新定向后注册并登录2模型(设计)

def after_sign_in_path_for(user) 
    root_path 
end 

def after_sign_in_path_for(admin) 
    admin_path 
end 

但是,它只执行最后一个(admin)。因此,无论何时我以用户身份登录,我都将被重定向到admin_path而不是root_path,因为它应该是。有任何想法吗?

回答

1

做这样的事情,如果你有UserAdmin两个独立的型号:

def after_sign_in_path_for(resource) 
    resource.is_a?(Admin) ? admin_path : root_path 
end 
+0

它的工作原理!真棒!谢谢。 –

0

Ruby明白你正在重新定义after_sign_in_path_for,所以定义的最后一个会生效。

你可以简单地修改这样的代码,使其工作:

def after_sign_in_path_for(user) 
    user.admin? ? admin_path : root_path 
end 

只要确保user.admin?的功能是检查用户是否具有管理员角色或不!

+0

它不工作,因为我有两个型号,用户和管理员。它不是一个具有两个角色的模型。 –