高個子。這不是我認爲應該這樣做的方式,這意味着我做錯了;Rails HABTM協會不清除使用.clear,想法?
class Tag < ActiveRecord::Base
has_and_belongs_to_many :properties
end
class Property < ActiveRecord::Base
has_and_belongs_to_many :tags
def amenities
tags.where(:classification => :amenity)
end
end
所以我有屬性和標籤。他們與數據透視表具有HABTM關係。
當我在屬性上執行.tags
時,我得到完整列表,如果我在該完整列表上執行.clear
,它會正確地從數據庫中刪除關聯。
當我做了.amenities
我得到的只是那些與設施的分類正確標記的標籤,但如果我做了.clear
它不能刪除那些結果而只是再次做了.amenities
查詢在控制檯輸出爲[]
。
所以這意味着它只是.clear
'結果數組..而不是我真正想要的關聯。
所以現在的問題是; .clear
來自HABTM關係的關聯的正確方法是什麼,同時給它一個where
子句以限制哪些關聯被刪除?
謝謝你們。希望這不是太混亂..
'.clear'是爲集合關聯創建的方法:'collection.clear',所以我認爲你不能用你自己的方法來使用它。也許你可以使用'destroy_all'方法,例如:'@ property.tags.amenities.destroy_all' – Thanh
'.destroy_all'實際上「銷燬」標籤,而不僅僅是刪除關聯。我需要關聯銷燬,而不是標籤。儘管關閉! –
另外'.delete_all'試圖從標籤表中刪除。 –