私は最近、これを正確に実装しました。少し複雑ですが。
は、私は、ユーザー
class User
include Mongoid::Document
embeds_many :roles
end
class Role
include Mongoid::Document
field :kind, :type => Symbol
field :account_id, :type => BSON::ObjectId
embedded_in :users, :inverse_of => :roles
end
class Account
include Mongoid::Document
end
#adding a role to user
account = Account.create
user = User.create
user.roles.create(:kind => :admin, :account_id => account.id)
#all users of an account
User.where("roles.account_id" => account.id)
#users accounts
Account.where(:_id => user.roles.map(&:account_id))
#in cancan ability
can :access, Account, :_id => user.roles.map(&:account_id)
で役割を埋め込むたんでした私は何も働いaccessible_byカンカンクエリを持っていたが、それはそれが仕事を得るためにmongoidためにいくつかの改造が必要でした。
希望するものは です(注:ここにこのコードを書き込んだので、実行されているかどうかわかりません)