使用has_many through在rails应用程序中设置外键关系的位置

时间:2011-01-11 22:42:38

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

我正在建立一个简单的has_many通过关系。我想知道在建立外键关系时是否有任何最佳实践。

该应用程序旨在允许用户创建项目和广告,其中使用列表模型将项目与广告连接(列表模型还具有时间戳和订单字段)。

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

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

基于以上所述,我想也许我应该只是让广告和物品属于用户。如果我这样做,有没有明显的理由也可以列出belongs_to用户?我打算那样做,但不知何故,这对我来说太过分了。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

我正在努力了解你拥有的东西:

用户 广告 项目 清单

Listing似乎是某种将ItemAd相关联的联接模型。

我没有看到很多错误的方法来做到这一点。我认为最常规化的方法是让一个项目belong_to成为一个用户,并通过它获取列表和广告。但是你也要在那里付出代价,既要编写恼人的代码,又必须执行多个连接才能获得你的广告。

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

即使您在模型中弄乱了user_id个字段,以后使用迁移添加这些字段也不是非常困难。