管理员用户的默认路由(设计)

时间:2013-01-03 09:52:01

标签: ruby-on-rails-3 devise routes

这里的问题很少,我似乎无法将管理员用户路由到适当的地方。我已经设置了设计并添加了列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

但仍指示我进入用户登录页面

由于

2 个答案:

答案 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