gpt4 book ai didi

ruby-on-rails - 使用 mongoid 的作用域角色

转载 作者:可可西里 更新时间:2023-11-01 09:58:30 25 4
gpt4 key购买 nike

使用 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)

我也有 cancan 查询 accessible_by 工作,但它需要一些 mongoid 的 mod 才能让它工作。

希望对你有帮助(注意:我只是在这里写这段代码所以不确定它是否运行)

关于ruby-on-rails - 使用 mongoid 的作用域角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com