這與之前的問題很相似,但是我們的方法稍有改變。創建並銷燬HABTM關聯 - 不是實際記錄?
我需要能夠銷燬版本之間的關聯&曲目+產品&曲目不會破壞曲目本身。然後,我需要能夠將Track與任何發行版或產品重新關聯。
我的型號如下:
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
has_and_belongs_to_many :products
end
class ReleaseTracks < ActiveRecord::Base
belongs_to :release
belongs_to :track
end
class ProductsTracks < ActiveRecord::Base
belongs_to :product
belongs_to :track
end
任何人都可以用適當的控制器方法幫助嗎?
如果我請使用以下例如產品導軌,它破壞了田徑協會:
@product = Product.find(params[:product_id])
@track = @product.tracks.find(params[:id])
@track.destroy
我已經試過這樣的事情,但它給了我一個notmethoderror:
@product = Product.find(params[:product_id])
@track = @product.products_tracks.find(params[:track_id])
@track.destroy
任何人都可以將我指向正確的方向嗎?正如我所說,我主要需要銷燬,但我還需要重新創建關聯。
是的,你說得對,我已經調整了我的曲目/產品型號,但我現在得到一個「未初始化不斷的產品::產品追蹤'錯誤? – Raoot 2012-03-19 14:13:43
您是否刪除了原始問題中提到的類定義並生成了新的模型類(並運行了數據庫遷移)? – 2012-03-19 14:22:50
工作,非常感謝! – Raoot 2012-03-19 15:40:12