繁体   English   中英

如何在ROR中使用devise添加管理员

[英]how to add admin with devise in ROR

我正在使用devise gem,我想创建管理员

Rails G迁移add_admin_to_user

在数据库中

 def change
    add_column :users, :admin , :boolean , {default: false}
  end

def用户

def admin?
    user=User.create(email: "info@presale.ca",password: "12345678")
    user.admin=true
    user
    user.save
    admin
  end
end

在索引页面

<% if current_user && current_user.admin? %>
<% end %>

def用户有问题吗,如何解决?

因为您的用户模型上已经有一个布尔:admin属性,所以有一个默认的admin? 开箱即用的方法。 如果调用类似User.find(1).admin? 它会根据您在数据库中的值返回true或false-因此您可能不想覆盖此值。

在用户模型中定义一个新方法来分配admin属性。

def make_admin!
  self.update_attribute(:admin, true)
end

现在您可以调用User.find(1).make_admin! 在您的控制器中,在Rails控制台中,或者在您有User实例的任何地方。

然后,您可以将视图中的代码更改为此:

<% if user_signed_in? && current_user.admin? %>
  # Show Admin Stuff
<% end %>

有一些不理想的事情:

  1. 您的属性User.admin是一个布尔值,这意味着您无需在User.rb(模型)中添加方法,就可以执行User.admin? 它将返回true或false。

  2. 在检查当前用户是否为管理员的方法中创建管理员用户不是一个好主意。 最快的方法是进入Rails控制台(通过您的终端)并将User更新为admin = true,例如User.last.update_attribute(:admin, true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM