My Rails 3.1应用程序有两个用户模型:用户和管理员。我正在使用Devise。
我的routes.rb包含
root :to => "pages#welcome"
用户可以以用户或管理员身份登录。
登录后,根路径应该更改。 Admins的根目录应该是“admins#dashboard”,Users的root应该是当前用户的显示页面。
我无法弄清楚如何最好地实现这一点,我有三个问题。
我会非常感谢指向正确的方向,因为这让我感到难过!
谢谢。
答案 0 :(得分:1)
您可以为Admin users =>使用命名空间2个不同的根。
另外,请查看设计配置文件devise.rb
,它有一些用于管理范围(用户和管理员)的设置。例如:
# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false
# Configure the default scope given to Warden. By default it's the first
# devise role declared in your routes (usually :user).
# config.default_scope = :user
# Configure sign_out behavior.
# Sign_out action can be scoped (i.e. /users/sign_out affects only :user scope).
# The default is true, which means any logout action will sign out all active scopes.
# config.sign_out_all_scopes = true
如果您不熟悉名称空间,可以阅读它们here
答案 1 :(得分:0)
页面#welcome< ---在此控制器和动作中发送params anonymous
你可以在你的application.rb
中试试这个def after_sign_in_path_for(resource)
if params[:anonymous].eql?("1") // mean user
redirect_to user_root_path, :user_id => current_user.id
else // mean administration
redirect_to admin_root_path
end
end
将user_root_path和admin_root_path配置到您在route.rb中所需的目的地
希望它会有所帮助。
答案 2 :(得分:0)
经过一番挖掘,以及米哈伊尔的一些指示,我自己设法回答了这个问题。
在我的routes.rb文件中,我添加了以下内容:
root :to => "pages#welcome"
为未经身份验证的用户定义根目录。
authenticated :admin do
root :to => "dashboard#show"
end
定义经过身份验证的管理员的根目录,
match '/dashboard' => "dashboard#show", :as => :admin_root
在登录重定向后定义管理员并整理路径。
感谢所有的回复!