【问题标题】:Can two models belong_to each other?两个模型可以相互归属吗?
【发布时间】:2012-04-16 07:16:08
【问题描述】:

我有两个模型,它们是一对一的。 A 目前有一个 B。

最近我遇到很多情况,如果 A 保留 B 的 id 以简化逻辑并提高性能,这是可取的。但是我想知道:

  1. 这是可能的
  2. 会违反和约定
  3. 真的有什么想法

更新

我错了,左外连接不会受益于额外的外键。

我能想到的唯一地方是找到所有没有 B 的 A,我的 100000 多条记录中的每一条都需要一个内连接。但是,如果有一个 id,那么我可以立即知道哪个 A 有一个 B。

【问题讨论】:

  • 您目前看到 has_one/belongs_to 设置有哪些性能问题?
  • 目前我需要对一个查询进行LEFT OUT JOIN,该查询需要根据B的存在以及许多其他条件具有不同的查询逻辑。
  • 请详细说明您的模型以及为什么需要循环引用。
  • 另外,显示您尝试执行的查询类型。我确信有一种方法可以在没有多余信息的情况下做到这一点。
  • 应该可以实现这一点,但必须非常小心,不要在验证和过滤器等区域出现无限循环。我同意 tsherif 的观点,应该有办法避免这种情况。

标签: ruby-on-rails ruby-on-rails-3 activerecord associations


【解决方案1】:

我不相信这是可能的 - 您必须决定将外键保存在哪里。使用通过关系连接以及现有模型都通过连接成为 has_one 对您来说有意义吗?

【讨论】:

    【解决方案2】:

    另一种选择是将 A id 放在 B 上,即非规范化。这将允许您确定哪些 A 没有 B,哪些 A 有 B。这可能适用于报告 B 不经常在 A 之间移动的场景。

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多