0

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

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

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

请帮忙 :)

4

1 回答 1

0

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

于 2012-11-09T21:24:21.447 回答