Ruby on rails 设计管理轨道
我按照Desive Wiki创建了一个非常基本的管理设置,以布尔格式向我的用户表中添加了一个管理列 我已经进入我的表(通过SQlite管理员),并将我的一个用户指定为管理员 然后,我将看到以下代码:Ruby on rails 设计管理轨道,ruby-on-rails,devise,admin,Ruby On Rails,Devise,Admin,我按照Desive Wiki创建了一个非常基本的管理设置,以布尔格式向我的用户表中添加了一个管理列 我已经进入我的表(通过SQlite管理员),并将我的一个用户指定为管理员 然后,我将看到以下代码: <% if user_signed_in? %> <% if current_user.admin? %> <%= link_to "Admin Job Post", new_user_job_path(current_user.id) %> &l
<% if user_signed_in? %>
<% if current_user.admin? %>
<%= link_to "Admin Job Post", new_user_job_path(current_user.id) %>
<% else %>
<%= link_to "Post a new job", new_user_job_path(current_user.id) %>
<% end %>
<% else %>
<%= link_to "Post a new job", new_user_session_path %>
<% end %>
我遇到的问题是,我的应用程序只会返回我的
,即使是在与管理员用户登录时也是如此
这将是伟大的得到一个解决方案,因为我已经尝试了几个变化,但无法让它工作
提前感谢您的帮助 我不确定您的代码是否完整,但我有一个类似的设置,但我使用以下内容来显示用户以管理员身份登录后的链接(我使用了“try”,因为它不在“user\u logged\u in”检查范围内)
您确定已将该用户设置为管理员吗?
要使用户成为管理员,您应该运行以下命令
User.find(#id_of_user_you_want_to_make_admin)
User.admin = true
User.save!
如果您将Rails 4与Desive 2.x一起使用,这就是您想要的。注意:admin是不必要的,为了清楚起见,我在这里把它们作为“?”放在这个方法后面,因为这个方法似乎会让人联想到ruby。另一种授予管理员特权的方法是简单地使用对我来说总是有效的
。这样,您就不必担心整个系统。您是否确认用户确实已登录,并且当前用户.admin?
返回true?当前用户肯定已正确登录,因为所有仅用于已登录成员的元素都已显示。如何检查当前的_user.admin?返回true?例如,您可以添加
。或者设置调试器断点并在控制台中检查它。在命令行中使用rails控制台
,然后使用user=user。其中(电子邮件:your@email.com)。首先
将为您提供用户。接下来检查user.admin?
显示的内容。
User.find(#id_of_user_you_want_to_make_admin)
User.admin = true
User.save!
<% if current_user.present? && current_user.has_role?(:admin) %>
<li><%= link_to 'Some Cool Admin Feature', cool_admin_path %></li>