为用户评论事件嵌套资源

时间:2014-01-17 17:43:50

标签: ruby-on-rails database nested nested-resources

我正在尝试使用Rails和嵌套资源。用户通过UserEvent连接表有许多事件(反之亦然)。我还希望用户对事件进行评论。到目前为止,Event在我的资源中嵌套在User下。你会如何筑巢评论?是否会嵌套在Event下,因此在User下有两个连续嵌套的资源?这会怎么样?

1 个答案:

答案 0 :(得分:3)

我认为这是我建议的嵌套方法:

resources :users
resources :events do
  resources :comments
end

在多对多关系中,将一个嵌套在另一个之下通常没有意义,因为它们之间没有更强的遏制关系。

在您的方案中,用户不属于一个事件,并且一个事件不属于一个用户,因此让您的路由代表它不会对关系建模。您的网址看起来像/events/1/users/2。这意味着用户2仅存在于事件1中。

我认为您的UserEvent是顶级资源是有意义的。另一方面,Comments确实拥有一些对嵌套有意义的所有权。更有可能的是,Comment将与Event相关联。 User只是负责它的人。在用户下嵌套评论会为您提供简单的网址,以显示用户的所有评论,但我打赌您更有可能显示Event的所有评论。考虑到这一点,我建议在Comments下嵌套Events

如果您要删除nullify模型中的用户和user_id Comment,这也是有意义的。您仍然可以拥有评论的网址。如果您删除了Event,则评论可能无论如何都不再有用,因此您可以直接删除它们。