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
助けてください :)