注册后重定向并使用2个模型登录(设计)

时间:2016-03-02 02:38:57

标签: ruby-on-rails devise

我的应用程序中有两个模型,User和Admin。所以,我将这些代码放在我的应用程序控制器中:

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。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您有UserAdmin两个单独的模型,请执行以下操作:

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

答案 1 :(得分:0)

Ruby理解您正在重新定义after_sign_in_path_for,因此定义的最后一个将生效。

您可以像这样修改代码以使其正常工作:

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

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