如何销毁两个模型之间的所有关联数据? (Rails初学者)

时间:2011-11-07 13:22:52

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有两个模型:storecategory以及一个名为categories.stores的联接表。

如何在连接表中删除商店对象的所有关系数据?

我可以使用以下其中一种:

store.categories.destroycategory.stores.destroy

注意:两个模型都是has_and_belongs_to_many(因此每个关联记录都有无标识符 - 只有store_id和category_id)

1 个答案:

答案 0 :(得分:9)

has_and_belongs_to_many关联中,您可以使用delete_alldestroy_all

has_many关联中,您应该考虑使用delete_all,因为它会删除:dependent策略后的记录(默认情况下,它会使外键无效)而不是destroy_all,这会破坏关联记录。

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Delete+or+destroy%3F

的更多详情