2012-02-19 19 views
1

我有兩個模型,通過has_and_belongs_to_many關聯關聯。我想銷燬這兩個對象之間的關聯,但不會刪除這些對象本身。有比以下更簡單的方法嗎?是否需要從協會的雙方中刪除?

list = List.find(params[:list_id]) 
contact = Contact.find(params[:contact_id]) 

list.contacts.delete contact 
contact.contact_lists.delete list 

list.save 
contact.save 

回答

2

如果您使用的是has_and_belongs_to_many,則關聯記錄位於連接表中,例如, lists_contacts。因此,只需在list.contacts.delete contact等操作的一端刪除該行即可。

例如:

list = List.create 
contact = Contact.create 
list.contacts << contact 
list.save 
p contact.lists # => [#<List id: 5, name: nil>] 
list.contacts.delete contact 
list.save 
p contact.reload.lists # => [] 
+0

謝謝了。 :)還提醒我,我需要重新加載控制器中其他地方的東西。 D'哦。 – Drew 2012-02-19 04:21:10