ruby-on-rails - 使用 before_destroy 删除另一个模型的条目?

标签 ruby-on-rails ruby-on-rails-3 destroy

所以我有一个模型,我们称之为 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/

相关文章:

ruby-on-rails - 在rails中判断一个方法属于哪个类

ruby-on-rails - capybara 访问无缘无故被卡住

ruby-on-rails - Thinking Sphinx——在配置文件中找不到索引

java - 线程启动的运行进程不会破坏(Java)

java - 结束陷入 InputStream.read() 循环的线程

ruby-on-rails - 回形针错误 : NotIdentifiedByImageMagickError

ruby-on-rails - Rails 验证中 float 的最大数量是多少?

ruby-on-rails - 我如何在表单中包含 Rails 连接表字段?

ruby-on-rails-3 - 为什么 "bundle update"不更新 Gemfile 以使用 Rails 3.0.5?

javascript - 在 Ember.js 中销毁对象