【问题标题】:Mongoid Relations (Custom accessors)Mongoid 关系(自定义访问器)
【发布时间】:2012-07-06 19:05:39
【问题描述】:

我在我的 Rails 应用程序中使用 Mongoid。我有一个 User 模型,也有一个 Role 模型(想想 Admin、guest 等)。

我想设置我的 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,但我真的找不到有关此过程的任何教程或文档。

感谢您的帮助。

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多