Rails破坏多个对象问题的方法

时间:2013-12-15 05:30:22

标签: ruby-on-rails ruby

我正在努力解决手头的逻辑和任务,并希望就如何解决这个问题提出一些意见。

我有一个类似于Reddit的应用程序。我的应用程序中有一个帖子/评论/用户/类别/投票模型。在我的帖子控制器中,我在帖子上设置了destroy方法。在我的posts#show controller中,我将其设置为显示用户创建的完整帖子和许多用户可以创建的评论。在我的Users controller展示方法和视图中,我显示每个用户的评论和帖子,所以我的问题是,如果用户删除他们的帖子并且该帖子有评论,我该如何删除帖子和所有帖子其相关评论。现在,我删除了一篇帖子,其帖子的原始用户发表了一些评论,我得到的NoMethodError in Users#show undefined method标题为nil:NilClass`。

这个类显然是nill因为它已经空了,因为我删除了用户评论过的帖子。有什么帮助吗?

确切错误发生在app/views/comments/_comment.html.erb

上的<p>commented on <em><%= link_to comment.post.title, post_path(comment.post) %></em></p>

1 个答案:

答案 0 :(得分:1)

在帖子和评论之间的关联中使用dependent: :destroy。例如:

class Post < ActiveRecord::Base
    has_many :comments, dependent: :destroy
end

现在,当你在帖子上调用destroy时,Rails会销毁相关的评论。

有关详细信息,请在Rails docsassociations guide中搜索“相关”。