我在我的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
目前,当我从Rails控制台执行Role.new
时,我得到一个似乎没有字段来存储被邀请者用户的对象。我该如何解决?我见过人们使用inverse_of但我无法找到关于此过程的任何教程或文档。
感谢您的帮助。
答案 0 :(得分: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