0

gemRolify3.2.0を使用してユーザーロールを管理しています。

スコープ外の役割をそのように追加すると、すべてが機能します。'rails console'の使用:

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

すばらしいですが、同じことをしようとすると、リソースをスコープにした役割で、それは持続しません。再び「レールコンソール」を使用します。

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

問題はモデルにあり、名前フィールドに2つの一意のインデックスがありました。最初のインデックスを削除したところ、すべてが完全に機能するようになりました。また、他の人のためにこれを修正できるかどうかを確認するために、プルリクエストをrolifyリポジトリに送信しました。

于 2012-11-09T21:24:21.447 に答える