Active Record的has_many :through如何移除一个关联记录

48

这可能是我疏忽了一个非常基本的问题,但我似乎想不起来一个简单的方法,可以删除通过has_many:through连接的两个对象之间的关联。例如:

class Photo
  has_many :tags, :through => :taggings
  has_many :taggings, :dependent => :destroy
end

class Tags
  has_many :photos, :through => :taggings
  has_many :taggings, :dependent => :destroy
end

class Taggings
  belongs_to :photo
  belongs_to :tag
end

如果您有两个对象,tagphoto,您可以通过执行以下操作将它们关联起来:
photo.tags << tag

那么,是否有同样简单的相反情况呢?即:

photo.tags.remove tag
1个回答

72

这是您想要的内容:

photo.tags.delete(tag)

28
请注意,使用delete不会触发关联模型的before_destroyafter_destroy回调函数。如果需要这样做,请使用destroy代替delete - PinnyM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接