Mongoid Relations(自定义访问者)

时间:2012-07-06 19:05:39

标签: ruby-on-rails ruby-on-rails-3 model associations mongoid

我在我的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但我无法找到关于此过程的任何教程或文档。

感谢您的帮助。

1 个答案:

答案 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