0

我在我的 Rails 应用程序中使用 Mongoid。我有一个用户模型,我也有一个角色模型(想想管理员、访客等)。

我想设置我的 Mongoid 关联,以便可以使用以下代码:

u = User.first
u.invited_roles # returns all roles a user has been assigned

r = Role.new
r.invitee = user # user id should be stored in the Role
r.save!

目前,我的模型设置如下:

class User
  include Mongoid::Document
  has_many :invited_roles, :class_name => 'Role'
end

class Role
  include Mongoid::Document
  has_one :invitee, :class_name => 'User'
end

目前,当我Role.new从 Rails 控制台执行此操作时,我得到一个对象,该对象似乎没有存储被邀请者用户的字段。我该如何解决?我见过有人使用 inverse_of,但我真的找不到关于这个过程的任何教程或文档。

谢谢您的帮助。

4

1 回答 1

1

好吧,考虑一下 --- 一个用户将被邀请拥有多个角色,但该角色只有一个用户。现在,这不是 has_one 意义上的“拥有一个”。相反,它定义了一个子关系。

因此,将 has_one 更改为 belongs_to 即可。

class User
  include Mongoid::Document
  has_many :invited_roles, :class_name => 'Role'
end

class Role
  include Mongoid::Document
  belongs_to :invitee, :class_name => 'User'
end
于 2012-07-06T19:39:06.430 回答