rails /如何使用嵌套资源

时间:2016-02-13 18:31:42

标签: ruby-on-rails postgresql activerecord

我有一个rails应用程序。用户可以创建将在产品索引页面上列出的产品(包括有关发布它的用户的一些数据),并且每个人都可以在app/products.html上看到该列表。

实现此目的的最佳方法是什么?我应该使用嵌套资源(用户有很多产品),在这种情况下我可以使用product.user.name来显示用户名,或者我应该创建一个独立的类,以便在用户创建产品时,使用某些用户属性(名称等) 。)将保存在产品表中。

1 个答案:

答案 0 :(得分:2)

你在这里混合了很多不同的概念。

嵌套路线

在REST中,您有一个嵌套资源的概念,它通过URI表示,如:

posts/:post_id/comments # comment that belong to a resource.

这告诉我们有一个"有很多" postcomments之间的关系。

这里的最佳做法是:

  • 如果你不需要,不要筑巢。
  • 永远不要超过1级。例如posts/:post_id/comments/:comment_id/replies应为comments/:comment_id/replies

关联和域建模

另一方面,域建模是模型如何组合在一起的。在ActiveRecord中,每个模型类都由数据库表支持。

每个模型应对应于问题域中的单一类型的对象。因此,在您的情况下,您将拥有User类和Products类。

它们将通过products.user_id列链接。所以不 - 你不应该在products表中存储用户属性。