所以我有一个模型,我们称之为 Notes。在笔记上,您只能发布几篇文章。所以笔记模型有这样一行:
has_many :posts
帖子模型有一行
belongs_to :note
现在,当用户销毁帖子时,如果注释不再有任何其他帖子,我希望该注释被销毁。
我想我应该用 before_destroy 将此代码写入后模型中:
def delete_note_if_last_post
if self.note.posts.count == 1
self.note.destroy
end
end
这行不通。它根据“非法指令”关闭服务器。有什么方法可以完成我想做的事情吗?
编辑:更改了代码,因为我注意到一个错误,现在问题略有不同。
最佳答案
您可以返回 false 以防止模型在 before_destroy 过滤器中被破坏
before_destroy :has_no_post
然后在 has_no_post
def has_no_post
#You can prevent this from deletion by using these options
#Option1 return false on certain condition
return false if posts.any?
#or add an error to errors
errors << "Can not delete note if it has post" if posts.any?
#raise an exception
raise "Cant delete ..." if blah blah
结束
关于ruby-on-rails - 使用 before_destroy 删除另一个模型的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931872/