我正在尝试使用Rails和嵌套资源。用户通过UserEvent连接表有许多事件(反之亦然)。我还希望用户对事件进行评论。到目前为止,Event在我的资源中嵌套在User下。你会如何筑巢评论?是否会嵌套在Event下,因此在User下有两个连续嵌套的资源?这会怎么样?
答案 0 :(得分:3)
我认为这是我建议的嵌套方法:
resources :users
resources :events do
resources :comments
end
在多对多关系中,将一个嵌套在另一个之下通常没有意义,因为它们之间没有更强的遏制关系。
在您的方案中,用户不属于一个事件,并且一个事件不属于一个用户,因此让您的路由代表它不会对关系建模。您的网址看起来像/events/1/users/2
。这意味着用户2仅存在于事件1中。
我认为您的User
和Event
是顶级资源是有意义的。另一方面,Comments
确实拥有一些对嵌套有意义的所有权。更有可能的是,Comment
将与Event
相关联。 User
只是负责它的人。在用户下嵌套评论会为您提供简单的网址,以显示用户的所有评论,但我打赌您更有可能显示Event
的所有评论。考虑到这一点,我建议在Comments
下嵌套Events
。
如果您要删除nullify
模型中的用户和user_id
Comment
,这也是有意义的。您仍然可以拥有评论的网址。如果您删除了Event
,则评论可能无论如何都不再有用,因此您可以直接删除它们。