我正在建立一个简单的has_many通过关系。我想知道在建立外键关系时是否有任何最佳实践。
该应用程序旨在允许用户创建项目和广告,其中使用列表模型将项目与广告连接(列表模型还具有时间戳和订单字段)。
我的主要问题是:哪些模型属于用户模型?我认为最简单的解决方案是列出belongs_to用户。这样我就可以使用has_many through关系来确定哪些项目和哪些广告属于每个用户。
然而,我想到这可能会留下一些漏洞,这取决于我想要的工作流程。例如,如果用户想要在创建包含这些项目的广告之前创建一堆项目,该怎么办?如果用户在创建任何项目之前创建广告会怎样?
基于以上所述,我想也许我应该只是让广告和物品属于用户。如果我这样做,有没有明显的理由也可以列出belongs_to用户?我打算那样做,但不知何故,这对我来说太过分了。
这似乎是在rails应用程序中遇到的一个非常典型的情况,所以我希望有经验的人来到这里并且可能能够分享一些见解。
谢谢!
答案 0 :(得分:0)
我正在努力了解你拥有的东西:
用户 广告 项目 清单
Listing
似乎是某种将Item
与Ad
相关联的联接模型。
我没有看到很多错误的方法来做到这一点。我认为最常规化的方法是让一个项目belong_to
成为一个用户,并通过它获取列表和广告。但是你也要在那里付出代价,既要编写恼人的代码,又必须执行多个连接才能获得你的广告。
相反的极端只是让用户拥有所有内容belong_to
。你的2个模型中有一个额外的列,但是你也有更简单的关系。您也不必担心在设计架构时允许用户使用哪些工作流程。
即使您在模型中弄乱了user_id
个字段,以后使用迁移添加这些字段也不是非常困难。