Salve a tutti, avrei un problema su come distruggere un record di una
tabella esterna. Praticamente ho una relazione “uno a uno” fra le
tabelle Album e Download e ho il seguente codice:
class Album < ActiveRecord::Base
has_one :download, :dependent => :destroy
…
end
class Download < ActiveRecord::Base
belongs_to :album
…
end
Teoricamente se distruggo l’album, si drovrebbe distruggere anche il
relativo download giusto? Però non accade. Ho provato con il togliere
“:dependent => :destroy” e aggiungere nel controller dell’album:
class Album < ActiveRecord::Base
has_one :download, :dependent => :destroy
has_one: “This method should only be used if the other class contains
the foreign key. If the current class contains the foreign key, then you
should use belongs_to instead.”
class Download < ActiveRecord::Base
belongs_to :album
Quindi downloads dovrà avere un attributo album_id
Se invece vuoi che albums abbia download_id dovrai mettere
belongs_to :download, :dependent => :destroy
in album.rb e
has_one :album
in download.rb. Che sia l’album ad appartenere (belongs_to) al download
mi sembra poco naturale da leggere per cui lascerei le cose come sono
nei modelli correggendo solo gli attributi nelle tabelle.
E anche così non funzionava…comunque ho risolto il problema
semplicemente con la
:dependent => :destroy, non so come ma alla fine è andato tutto a
posto!! Grazie mille
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.