删除HABTM关联的方法?

时间:2012-03-14 13:16:30

标签: ruby-on-rails ruby ruby-on-rails-3

我有以下型号:

class Release < ActiveRecord::Base
  has_many :products, :dependent => :destroy
  has_and_belongs_to_many :tracks
end

class Product < ActiveRecord::Base
 belongs_to :release
 has_many :releases_tracks, :through => :release, :source => :tracks      
 has_and_belongs_to_many :tracks
 before_save do
   self.track_ids = self.releases_track_ids
 end        
end

class Track < ActiveRecord::Base
  has_and_belongs_to_many :releases
end

class ReleaseTracks < ActiveRecord::Base
  belongs_to :release
  belongs_to :track
end

class ProductsTracks < ActiveRecord::Base
  belongs_to :product
  belongs_to :track
end

目前我可以创建一个版本并添加曲目。当我创建产品时,它会继承该版本的曲目。

我想要做的是能够删除产品级别的单个曲目,而不删除曲目条目本身,因此请删除ProductsTracks中的关联。

我将如何编写适当的destroy方法,它应该驻留在哪个控制器中以及link_to应该如何构造?

1 个答案:

答案 0 :(得分:1)

您是否尝试过在产品级别销毁曲目?我认为默认行为是破坏关系,而不是关系另一端的记录。