如何在ROR中添加带有设计的管理员

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

rails g migration 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 

在索引页面中

   

def用户有什么问题请问如何解决?

有一些不理想的事情:

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

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

因为您的User模型上已经有boolean:admin属性,所以有一个默认的admin? 开箱即用的方法。 如果你打电话给User.find(1).admin? 它将根据您在db中的值返回true或false – 因此您可能不希望覆盖它。

在User模型中定义新方法以分配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 %>