p47*_*p47 2 ruby-on-rails mongodb mongoid cancan ruby-on-rails-3
使用Mongoid,如果我有一个帐户模型并且想要为该帐户分配具有特定角色的用户,最好是将该关系嵌入帐户,用户还是创建角色集合映射帐户到具有角色名称的用户?
我希望能够返回帐户的所有用户,并验证当前用户是否可以使用Cancan等帐户访问该帐户.
构建基于帐户< - >用户角色的关系的推荐方法是什么?用户可能属于可能具有不同角色的多个帐户,类似于Basecamp的工作方式.
我最近实现了这一点.虽然有点复杂.
我所做的是将角色嵌入用户
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)
Run Code Online (Sandbox Code Playgroud)
我也有cancan查询access_by工作,但它需要一些mods来mongoid让它工作.
希望有所帮助(注意:我刚刚在这里编写了这段代码,所以不确定它是否运行)
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |