Ruby on rails Rails:dependent=>Distroy with conditions

Ruby on rails Rails:dependent=>Distroy with conditions,ruby-on-rails,Ruby On Rails,假设我有狗、皮带和主人。。。如果我弄坏了皮带,我也想把狗也弄坏。。但如果狗有主人就不会了 您不想在此处使用:dependent=>:destroy,而是像这样使用before\u destroy回调: #leash.rb before_destroy :destroy_dog def destroy_dog dog.destroy unless dog.owner end 您不想在此处使用:dependent=>:destroy,而是像这样使用before\u destroy回调: #

假设我有狗、皮带和主人。。。如果我弄坏了皮带,我也想把狗也弄坏。。但如果狗有主人就不会了

您不想在此处使用:dependent=>:destroy,而是像这样使用before\u destroy回调:

#leash.rb

before_destroy :destroy_dog

def destroy_dog
  dog.destroy unless dog.owner
end
您不想在此处使用:dependent=>:destroy,而是像这样使用before\u destroy回调:

#leash.rb

before_destroy :destroy_dog

def destroy_dog
  dog.destroy unless dog.owner
end
也适用于has_many,根据where条件销毁对象


也适用于has_many,它根据where条件销毁对象

您可以在销毁后使用回调。详情请参阅[此答案][1]。[1] 当前位置销毁后你能称之为“self”吗?我自己没试过,但我想你能。模型对象应该在销毁后仍然存在。哦,酷。我不知道。你可以在销毁后使用回调。详情请参阅[此答案][1]。[1] 当前位置销毁后你能称之为“self”吗?我自己没试过,但我想你能。模型对象应该在销毁后仍然存在。哦,酷。我没意识到。我在想类似于self.dog.destroy的东西,除非self.dog.owner…但不确定你能不能在destroy之后给self打电话是的,在destroy之前可能更合适。相应地更新了答案。嘿,我想你需要把self.dog.destory放在这里,除非self.dog.owner没有?self在这里是不必要的,这是隐含的。它之所以能工作是因为ruby试图找到一个局部变量,即dog,如果找不到它,它会将它发送给self。试试看:我在想self.dog.destroy,除非self.dog.owner…但不确定你是否可以在destroy之后称self是的,在destroy之前可能更合适。相应地更新了答案。嘿,我想你需要把self.dog.destory放在这里,除非self.dog.owner没有?self在这里是不必要的,这是隐含的。它之所以能工作是因为ruby试图找到一个局部变量,即dog,如果找不到它,它会将它发送给self。试试看: