高人。这不是我认为应该的方式,这意味着我做错了;
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
对一个属性执行 a 时,我会得到完整的列表,如果我.clear
在该完整列表上执行 a ,它会正确地从数据库中删除关联。
当我执行 a 时,.amenities
我只会得到正确标记为舒适性分类的那些标签,但是如果我.clear
对这些结果执行 a ,它将无法删除它们,而只是.amenities
在控制台中再次执行查询,输出为[]
.
所以这意味着它只是.clear
'结果数组..不是我真正想要的关联。
那么问题来了;.clear
从 HABTM 关系中建立关联的正确方法是什么,同时给它本质上一个where
子句来限制哪些关联被删除?
多谢你们。希望这不会太混乱..