这里的第一个问题,我希望具体而不是愚蠢。 我也是Rails和AdminUser的新手,我想创建一个控制器,只有当current_user属于某种类型时才显示菜单项(在我的例子中:Lektor)。
我写过这样的话:
disallowed_actions = []
disallowed_actions << :create if proc {current_admin_user.departments.to_a[0].name != "Lektor" }
actions :all, :except => disallowed_actions
但它不起作用,我认为这是因为我在proc中引用的current_admin_user与控制器不同,但我也不能引用方法或proc之外的current_admin_user。 有什么建议吗?
答案 0 :(得分:0)
创建迁移,运行:rails g migration AddRoleToUsers role:string
以向用户添加角色。
迁移bundle exec rake db:migrate
在你的rails c中运行User.first.update_attributes(:role => 'admin')
,这将为数据库中的第一个用户添加一个'admin'角色。
在您的用户模型(user.rb)中创建此方法:
def admin?
role == 'admin'
end
现在在视图中(假设你正在使用erb)你想隐藏普通用户的动作添加:
<% if current_user.admin? %>
# show stuff
<% end %>
注意: current_user是设计方法,如果您没有使用设计,则需要使用自己的方法来检查当前已登录的用户,你可以用会话来做。
请参阅Rails: where does the infamous "current_user" come from?
通过这种方式,您可以向不是管理员的用户隐藏内容。