Meine has_many: durch Assoziationen auf Releases/Produkte/Tracks scheinen die Verfolgen und verwaiste Zuordnungen in den releases_tracks/products_tracks Tabellen zu löschen. Ich kann nicht sehen, wo ich falsch gelaufen bin. Ich dachte, das Standardverhalten wäre, nur die Verknüpfung zu löschen. Kann mir bitte jemand helfen?Warum funktionieren meine has_many: through-Assoziationen beim Löschen nicht korrekt?
Meine Models:
class Track < ActiveRecord::Base
has_many :releases_tracks
has_many :tracks, :through => :releases_tracks
has_many :products_tracks
has_many :products, :through => :products_tracks
end
class Release < ActiveRecord::Base
has_many :releases_tracks
has_many :tracks, :through => :releases_tracks
end
class Product < ActiveRecord::Base
has_many :products_tracks
has_many :tracks, :through => :products_tracks
before_save do
self.track_ids = self.releases_track_ids
end
end
class ProductsTrack < ActiveRecord::Base
belongs_to :product
belongs_to :track
end
class ReleasesTrack < ActiveRecord::Base
belongs_to :release
belongs_to :track
end
My Track-Controller (für die Aktion zerstören):
class TracksController < ApplicationController
before_filter :get_track_parent
def destroy
@track = @parent.tracks.find(params[:id])
@track.destroy
redirect_to @parent
end
private
def get_track_parent
if params[:product_id].present?
@parent = Product.find(params[:product_id])
elsif params[:release_id].present?
@parent = Release.find(params[:release_id])
end
end
end
Mein Link in den Versionen zerstören anzuzeigen:
<%= link_to image_tag("icons/delete.png"), release_track_path(@release,track), :confirm => 'Are you sure?', :method => :delete %>
Und schließlich meine Link in der Produktansicht zerstören:
<%= link_to image_tag("icons/delete.png"), product_track_path(@product,track), :confirm => 'Are you sure?', :method => :delete %>
Du brauchst vielleicht ': dependent =>: destroy' auf der Assoziation Bsp:' has_many: products,: through =>: products_tracks,: dependent =>: destroy' – VelLes
Werde es versuchen, danke. – Raoot
Angst, dass es nicht löst. – Raoot