【问题标题】:Where to set up foreign key relationships in rails app with has_many through在哪里通过 has_many 在 rails 应用程序中设置外键关系
【发布时间】:2011-01-12 07:26:24
【问题描述】:

我正在建立一个简单的 has_many through 关系。我想知道在设置外键关系时是否应该考虑任何最佳实践。

该应用程序旨在允许用户创建商品和广告,其中列表模型用于将商品与广告联系起来(列表模型还具有时间戳和订单字段)。

我的主要问题是:哪些模型应该属于用户模型?我在想最简单的解决方案是列出属于_to用户。这样我就可以使用 has_many through 关系来确定每个用户属于哪些项目和哪些广告。

但是,我想到这可能会留下一些漏洞,具体取决于我想要实现的工作流程。例如,如果用户想要在创建包含这些项目的广告之前创建一堆项目怎么办?如果用户在创建任何项目之前创建了广告怎么办?

基于上述情况,我在想也许我应该只制作属于用户的广告和物品。如果我这样做,是否有任何明显的理由也让列表属于_to 用户?我打算这样做,但不知何故,这对我来说似乎是多余的。

这似乎是在 Rails 应用程序中遇到的非常典型的情况,所以我希望有经验的人来过这里并可能能够分享一些见解。

谢谢!

【问题讨论】:

    标签: ruby-on-rails has-many-through


    【解决方案1】:

    我正在尝试了解您所拥有的:

    用户 广告 物品 上市

    Listing 似乎是某种连接模型,将ItemAd 关联起来。

    我认为这样做并没有太多错误的方法。我想这样做的最规范的方法是只拥有一个项目belong_to 一个用户,并通过它获取列表和广告。但是你也会为此付出代价,既要编写烦人的代码,又要执行多次连接才能获得广告。

    相反的极端是只拥有belong_to 用户的一切。您的 2 个模型中有一个额外的列,但是您也有更简单的关系。您也不必担心在设计架构时允许您的用户使用哪些工作流程。

    即使您搞砸并在模型中遗漏了 user_id 字段,以后使用迁移添加这些字段也不是很困难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 2023-03-21
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多