活动管理员 - 用户和管理员的相同模型

时间:2011-11-25 11:52:27

标签: ruby-on-rails

我希望Active Admin为网站做后端。我真的不想为用户和管理员提供单独的模型。

如果用户模型中有is_admin标志,我是否只有管理员用户才能登录Active Admin?如果用户不是管理员,他们应该只能登录网站前面的简单控制面板。

2 个答案:

答案 0 :(得分:5)

您可以按照建议在is_admin模型中添加User标记。然后,您可以使用is_admin?条件包围您的每个管理员选项,并在控制器中使用一些before_filter :admin_required

<强> application_controller.rb:

# if user is not admin redirect to main page
def admin_required
  current_user.is_admin? || redirect_to("/")
end

<强> any_controller.rb:

# Everybody can access show and index action, all others require admin flag set
before_filter :admin_required, :except => [:show, :index]

<强> any_view / show.html.erb

<% if current_user.is_admin? %>
  Hi Admin!
  Some cool admin stuff
<% else %>
  Hi User!
<% end %>
Stuff for everybody

答案 1 :(得分:1)

查看Active Admin的初始化文件config/initializers/active_admin.rb。在那里你应该看到:

# == User Authentication
#
# Active Admin will automatically call an authentication 
# method in a before filter of all controller actions to 
# ensure that there is a currently logged in admin user.
#
# This setting changes the method which Active Admin calls
# within the controller.
config.authentication_method = :authenticate_admin_user!

将其从默认:authenticate_admin_user!更改为,例如admin_required,就像@amep所说的那样!