我有两个模型,通过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
答案 0 :(得分: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 # => []