我正在努力解决手头的逻辑和任务,并希望就如何解决这个问题提出一些意见。
我有一个类似于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>
答案 0 :(得分:1)
在帖子和评论之间的关联中使用dependent: :destroy
。例如:
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
end
现在,当你在帖子上调用destroy
时,Rails会销毁相关的评论。
有关详细信息,请在Rails docs和associations guide中搜索“相关”。