【问题标题】:MongoID has_any_belongs_to_many ReferenceMongoID has_any_belongs_to_many 参考
【发布时间】:2013-12-24 00:37:21
【问题描述】:

我有两个模型

开发者

  has_and_belongs_to_many :founding_organizations, class_name: 'Organization'
  has_and_belongs_to_many :collaborating_organizations, class_name: 'Organization'

组织

  has_and_belongs_to_many :founders, class_name: 'Developer'
  has_and_belongs_to_many :collaborators, class_name: 'Developer'

如何在不更改组织模型的任何内容的情况下使开发人员模型代码正常工作。现在,当您创建组织并使用 organization.founders << current_developer 时,一切正常,并且开发人员 ID 存储在组织的创始人数组中,但是如果您查询 current_developer.founding_organizations 响应为空,我该如何实现此工作流程?我在 ActiveRecord 中使用连接表进行了这项工作,但我搬到了 MongoDB,它到目前为止已经好 10 倍,它只是习惯于以不同的方式做事,这让我感到困惑。

【问题讨论】:

    标签: ruby-on-rails mongodb ruby-on-rails-4 mongoid


    【解决方案1】:

    不确定在不更改 Organization 模型的情况下是否可行。 使用inverse_of 选项怎么样?

     has_and_belongs_to_many :founding_organizations, class_name: 'Organization', inverse_of: :founders
     has_and_belongs_to_many :collaborating_organizations, class_name: 'Organization', inverse_of: :collaborators
    
     has_and_belongs_to_many :founders, class_name: 'Developer', inverse_of: :founding_organizations
     has_and_belongs_to_many :collaborators, class_name: 'Developer', inverse_of: :collaborating_organizations
    

    你会在这里找到更多信息http://mongoid.org/en/mongoid/docs/relations.html#common

    【讨论】:

    • 谢谢你,我把它放在我的应用程序中,一切似乎都通过了错误检查,但是当我调用 current_developer.founding_organizations 时,我仍然一无所获,在手动查看数据库后,我可以看到组织本身有如果创始人 id 的列表,但开发人员本身没有任何内容可以将其与组织联系起来。我需要做其他事情来完成这个吗?
    • 我刚刚在一个示例应用程序中尝试过它,它对我很有效。您在该模型中是否有任何其他可能会干扰的关系?我怀疑 current_developer 对象中存在此问题或验证问题。
    • 显然你需要调用 current_developer.founder_of
    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多