我有一个rails应用程序。用户可以创建将在产品索引页面上列出的产品(包括有关发布它的用户的一些数据),并且每个人都可以在app/products.html
上看到该列表。
实现此目的的最佳方法是什么?我应该使用嵌套资源(用户有很多产品),在这种情况下我可以使用product.user.name
来显示用户名,或者我应该创建一个独立的类,以便在用户创建产品时,使用某些用户属性(名称等) 。)将保存在产品表中。
答案 0 :(得分:2)
你在这里混合了很多不同的概念。
在REST中,您有一个嵌套资源的概念,它通过URI表示,如:
posts/:post_id/comments # comment that belong to a resource.
这告诉我们有一个"有很多" post
和comments
之间的关系。
posts/:post_id/comments/:comment_id/replies
应为comments/:comment_id/replies
。另一方面,域建模是模型如何组合在一起的。在ActiveRecord中,每个模型类都由数据库表支持。
每个模型应对应于问题域中的单一类型的对象。因此,在您的情况下,您将拥有User类和Products类。
它们将通过products.user_id
列链接。所以不 - 你不应该在products表中存储用户属性。