Rails:dependent =>有条件的破坏

时间:2013-03-27 09:01:32

标签: ruby-on-rails

说我有狗,皮带和主人......如果我摧毁了一条皮带我也想要摧毁这条狗......但是如果这只狗有一个拥有者那就没有..

2 个答案:

答案 0 :(得分:2)

您不想在此使用:dependent => :destroy,而是使用before_destroy回调,例如:

#leash.rb

before_destroy :destroy_dog

def destroy_dog
  dog.destroy unless dog.owner
end

答案 1 :(得分:0)

class Book < ApplicationRecord
  belongs_to :author, -> { where active: true },
                        dependent: :destroy
end

也为has_many工作,它根据where条件破坏对象