代码之家  ›  专栏  ›  技术社区  ›  nour

如何在ROR中添加管理员和设备

  •  0
  • nour  · 技术社区  · 9 年前

    我正在使用designgem,我想创建admin

    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用户有问题,请如何修复?

    2 回复  |  直到 9 年前
        1
  •  1
  •   JeffD23    9 年前

    因为您的User模型上已经有一个boolean: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 %>
    
        2
  •  0
  •   Nathan Tuggy TonyLuigiC    9 年前

    有一些事情并不理想:

    1. 您的属性 User.admin 是布尔值,这意味着不在User中添加方法。rb(模型),您将能够 User.admin? 并且它将返回真或假。

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