Ruby on rails 设计管理轨道

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

我按照Desive Wiki创建了一个非常基本的管理设置,以布尔格式向我的用户表中添加了一个管理列

我已经进入我的表(通过SQlite管理员),并将我的一个用户指定为管理员

然后,我将看到以下代码:

<% 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>