【问题标题】:Rolify not persisting scoped rolesRolify 不持久化作用域角色
【发布时间】:2012-10-29 07:56:52
【问题描述】:

我正在使用 gem Rolify 3.2.0 来管理用户角色。

当我像这样添加一个非范围角色时,一切正常。使用“rails 控制台”:

u = User.first
u.roles
 => []
u.add_role :admin
u = User.first
u.roles.first.name
 => "admin"

很好,但是当我尝试做同样的事情但角色范围为资源时,它不会持续存在。再次使用“rails 控制台”:

u = User.first
u.roles
 => []
u.add_role :admin, Agency.first
u.roles.first.name
 => "admin"
u.roles.first.resource_type
 => "Agency"
u.save!
u = User.first
u.roles
 => []

所以,本地用户一切正常,但是当我重新查询模型时,角色没有被持久化?!

我的角色模型直接来自 rolify 生成器:

class Role
  include Mongoid::Document

  has_and_belongs_to_many :users
  belongs_to :resource, :polymorphic => true

  field :name, :type => String
  index({ :name => 1 }, { :unique => true })

  index({
    :name => 1,
    :resource_type => 1,
    :resource_id => 1
  },
  { :unique => true})

  scopify
end

请帮忙:)

【问题讨论】:

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


    【解决方案1】:

    问题出在模型中,名称字段上有两个唯一索引。我删除了第一个索引,现在一切正常。我还向 rolify repo 发送了一个拉取请求,看看我们是否可以为其他人解决这个问题。

    【讨论】:

      最近更新 更多