【问题标题】:Using the Rails Console, how do I add a new role to a user when using role_model?使用 Rails 控制台,如何在使用 role_model 时向用户添加新角色?
【发布时间】:2013-06-25 01:03:40
【问题描述】:

这里的新手尝试使用role_modelCanCan 启动和运行。我已将两个 gem 添加到我的 Gemfile 中。设置它们并可以验证它们是否确实在工作。但是,当我尝试在我的 Dev DB 中向用户添加新角色时,rails 控制台会回滚并且什么都不保存?我被难住了,因为我认为这将是小菜一碟....

这是我的代码:

模型 - User.rb

class User < ActiveRecord::Base
  include RoleModel

  attr_accessible :email, :username, :roles, :password, :password_confirmation

  has_secure_password
  validates :email, :username, :password, presence: true
  validates :email, :username, uniqueness: true

  roles :admin, :moderator, :developer, :user
end

模型 - Ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new

    user.can :manage, :all if user.is? :admin
  end
end

我在 Rails 控制台上运行的命令为用户添加适当的角色:

admin_user = User.find(1)
admin_user.roles = [:admin]
admin_user.save

Rails 然后吐出:

User Exists (0.5ms)  SELECT 1 AS one FROM "users" WHERE ("users"."email" = 'admin_user@example.com' AND "users"."id" != 1) LIMIT 1
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE ("users"."username" = 'admin_user' AND "users"."id" != 1) LIMIT 1
   (0.1ms)  ROLLBACK
 => false 

【问题讨论】:

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


    【解决方案1】:

    看起来这与 role_model 无关。在纯粹的新手时尚中,我没有意识到我试图保存的用户正在违反我在 User.rb 中设置的“密码”验证。我删除了

    :password, presence: true
    

    来自该文件,因为由于之前的验证,我不确定是否有必要。无论如何,问题在于需要修复的错误。

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2021-03-25
      • 2015-03-27
      • 2016-04-17
      相关资源
      最近更新 更多