2014-01-18 104 views
0

我知道标题可能含糊不清,但我不确定标题的标题。我不知道是否有一个“最佳实践”这一所以这里去...Ruby on Rails逻辑

我有一个基本的社交网络应用,我从头开始构建。用户可以发布状态,并且人们可以评论该状态,人们也应该能够对评论发表评论。我想我理解它应该如何工作,但不介意别人给我他们的观点。因此(关联性)地位has_many评论,反过来评论只有一个地位。评论have_many子评论和子评论只属于一个评论。这些嵌套评论如何工作?

如果用户发布状态,而另一用户发布评论;没关系。但是,如果...用户1发布状态和用户对该状态的2条评论,则用户3然后评论用户2的评论(因此用户1已经创建了状态,用户2评论和用户3是子评论)用户2回复用户3的子注释?它仍然作为一个子注释类(即评论评论),或者它将不得不如此嵌套:

用户1创建一个状态,用户2创建一个注释,用户3创建一个子注释,用户2创建子目录

这似乎不是正确的做法,因为如果用户在相同的状态下回复其他人的评论,它最终会变得太乱。

更新:调查关联另一种可能性是状态has_many评论和评论has_many回复。但是这并不能解决我的问题......如果用户回复其他用户对评论的回复,该怎么办?状态has_many评论,评论has_many回复....但回复也has_many回复?

回答

0

我总是使用awesome_nested_set这种情况下的宝石。所有评论只需要一个模型。更多关于嵌套和它们的用法一般,你可以阅读wiki page(它有一个非常简单的逻辑)。对于准备使用的解决方案检查acts_as_commentable_with_threading宝石的页面。

+0

谢谢你的回答。我会加倍努力,但目前还不行,因为我的账户太新了。尽管我将Ihar的答案标记为我的正式答案(他的答案更多地涉及我一直在寻找的内容,即Ancestry),但您的参考资料非常有用(特别是随时可用的解决方案,因此我可以更好地了解它在实践中的工作原理) 感谢您的帮助。 – user3154958