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

how to add admin with devise in ROR

我正在使用设计 gem 我想创建管理员

railsg迁移add_admin_to_user

在数据库中

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

定义用户

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 用户有问题如何解决?

有一些不理想的地方:

  1. 你的属性 User.admin 是一个布尔值,这意味着无需在 User.rb (模型)中添加方法,你将能够执行 User.admin? 并且它return 是真还是假。

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

因为您的 User 模型上已经有一个布尔值 :admin 属性,所以有一个开箱即用的默认 admin? 方法。如果你调用 User.find(1).admin? 之类的东西,它会根据你在数据库中的值 return 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 %>