这里的问题很少,我似乎无法将管理员用户路由到适当的地方。我已经设置了设计并添加了列admin并将其设置为boolean。然后我将用户更新为admin =>是的,并在控制台中验证了这一点。
当我登录我的应用程序时,用户被路由到一个页面,管理员用户应该被路由到另一个页面,这是我到目前为止
authenticated :current_admin_user do
root :to => 'book#searchbook'
end
authenticated :user do
root :to => 'search#index'
end
root :to => 'main#index'
然而,当我以w管理员用户身份登录时,我被路由到'search #index',好像我是普通用户..我需要做什么才能让管理员用户路由到'book#searchbook'。 之前我从来没有遇到过这个问题
任何帮助表示赞赏
修改
好的,所以经过一些研究我需要为管理员用户指定after_sign_in_path,到目前为止我有这个
def after_sign_in_path_for(resource)
if current_admin_user
searchbook_path
else
root_path
end
end
但仍指示我进入用户登录页面
由于
答案 0 :(得分:2)
好的,好像我有点失踪,所以如果其他人在此之前遇到过这样的问题,那就是我做了什么
在我添加的用户模型中
def is_admin?
self.admin == 1
end
然后在我的应用程序控制器中添加了这些方法
def authenticate_admin_user!
authenticate_user!
unless current_user.admin?
flash[:alert] = "This area is restricted to administrators only."
redirect_to root_path
end
end
def current_admin_user
return nil if user_signed_in? && !current_user.admin?
current_user
end
def after_sign_in_path_for(resource)
if current_user.admin?
searchbook_path
else
root_path
end
end
然后在只能由管理员用户访问的控制器中我添加了before_filter
before_filter :authenticate_admin_user!
希望这能帮助处于同样情况的其他人(感谢Jayson Lane)
原来他在9个月前帮助了我同样的问题......
答案 1 :(得分:0)
试着实现下面的代码..因为我在我的控制器中使用了这段代码..
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope.is_a?(User)
return root_path
else
return search_path
end
end