Database Rails 4删除属于某个帖子的评论
我有问题删除所有评论属于一个帖子,也将被删除Database Rails 4删除属于某个帖子的评论,database,ruby-on-rails-4,Database,Ruby On Rails 4,我有问题删除所有评论属于一个帖子,也将被删除 def delete_post @alibaba = params[:alibaba] if @alibaba == "true" @to_delete_post = Post.find(params[:id]) @comments_deleted = Main.where(post_id: params[:id]).all @comments_deleted.destroy @to
def delete_post
@alibaba = params[:alibaba]
if @alibaba == "true"
@to_delete_post = Post.find(params[:id])
@comments_deleted = Main.where(post_id: params[:id]).all
@comments_deleted.destroy
@to_delete_post.destroy
redirect_to admin_path
elsif @alibaba == "false"
@to_delete_post = PostMotivation.find(params[:id])
@comments_deleted = Main.where(post_motivation_id: params[:id]).all
@comments_deteled.destroy
@to_delete_post.destroy
redirect_to admin_path
end
end
现在,当我运行上述代码时,我有一个错误:
undefined method `destroy' for #<Array:0x007fb9900654b8>"
未定义的#的方法“destroy”
现在,当我用@comments\u deleted删除两行内容时,一切都很好,帖子从我的数据库中删除了,但属于该帖子的所有评论仍然存在,我不想每次删除帖子时都手动删除
为什么我的应用程序不想删除属于某篇文章的所有评论?
有人能给我解释一下吗?你不能“删除”数组。你可以删除数组中的每条记录
但是如果你把这两条线换成
Main.delete_all("post_id = ?", params[:id])
和(在@alibaba==“false”
上)
不能“删除”数组。可以删除数组中的每条记录
但是如果你把这两条线换成
Main.delete_all("post_id = ?", params[:id])
和(在@alibaba==“false”
上)
您可能希望使用destroy\u all来确保记录被删除,而不是使用delete\u all
Main.where(post_id: params[:id]).all,
您应该将@comments\u删除,以便
Main.where("post_id = ?", params[:id]) and do @comments_deleted.destroy_all
删除所有记录。您可能希望使用destroy\u all来确保记录已删除,而不是使用delete\u all
Main.where(post_id: params[:id]).all,
您应该将@comments\u删除,以便
Main.where("post_id = ?", params[:id]) and do @comments_deleted.destroy_all
要删除所有注释。如果在
Post
模型中有一个关系有许多,则可以设置一个dependent
选项来删除所有相关注释
has_many :comments, dependent: :destroy
这样可以简化功能:
def delete_post
if params[:alibaba]
Post.find(params[:id]).destroy
else
PostMotivation.find(params[:id]).destroy
end
redirect_to admin_path
end
如果在Post
模型中有一个关系has\u many
,您可以设置一个dependent
选项来删除所有相关的注释
has_many :comments, dependent: :destroy
这样可以简化功能:
def delete_post
if params[:alibaba]
Post.find(params[:id]).destroy
else
PostMotivation.find(params[:id]).destroy
end
redirect_to admin_path
end
首先,使用Post.find(params[:id])检索要删除的帖子
其次,使用@comment=@post.comments.where(post_id:@post.id)检索与删除的帖子相关的所有评论,其中station检索所有结果,而不仅仅是第一次出现的结果
最后,循环这些注释并销毁它们
@post = Post.find(params[:id])
@comment = @post.comments.where(post_id: @post.id)
@comment.each do |comment|
comment.destroy
end
首先,使用Post.find(params[:id])检索要删除的帖子
其次,使用@comment=@post.comments.where(post_id:@post.id)检索与删除的帖子相关的所有评论,其中station检索所有结果,而不仅仅是第一次出现的结果
最后,循环这些注释并销毁它们
@post = Post.find(params[:id])
@comment = @post.comments.where(post_id: @post.id)
@comment.each do |comment|
comment.destroy
end
您是否在Post模型中编写了多条注释,:dependent=>:destroy您是否在Post模型中编写了多条注释,:dependent=>:destroy