如何将用户设置为admin [rails]

时间:2015-08-08 10:19:06

标签: ruby-on-rails ruby ruby-on-rails-3

我试图将用户设置为管理员,这是我到目前为止编写的代码:

应用/控制器/ users_controller.rb

class UsersController < ApplicationController

  before_action :admin_user,     only: [:destroy]
  ..
  ..
  def admin_user
    redirect_to(root_url) unless current_user && current_user.admin?
  end

end

分贝/ seeds.rb

User.create!(name:  "admin",
             surname: "admin",
             email: "admin@1.it",
             password:              "password",
             password_confirmation: "password",
             admin: true)

因此,当我使用这些规范创建用户时,它也无法正常工作:输入&#39; localhost:3000 / users,它会将我重定向到root_url而不是用户页面。 有人能帮我吗?这段代码有什么问题? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

好的,这就是我设置管理员的方式:

  1. 执行迁移以向用户添加admin boolean列。它应该看起来像这样
  2. class AddAdminToUsers < ActiveRecord::Migration
      def change
        add_column :users, :admin, :boolean, default: false
      end
    end
    
    1. 在您希望管理员限制的元素的控制器中,编写一个看起来像这样的方法
    2. def require_admin
           if !current_user.admin?
                 redirect_to benefits_path
           end
      end
      
      1. 在该控制器的顶部写下before_action的东西

      2. 使用rails控制台将其中一个用户从admin false切换为admin true

      3. 测试您的管理员权限

答案 1 :(得分:0)

请浏览Rolify gem。

使用此gem,您可以为不同的用户定义不同的角色,并且为角色验证用户也非常容易。

答案 2 :(得分:0)

如果使用rails3,请使用before_filter。

before_filter :admin_user,     only: [:index]