Relazioni pericolose

Chiedo scusa per il titolo stupido, ma ci sto perdendo talmente tanto
tempo, che al posto di piangere mi metto a ridere. Comunque il mio
problema è: ho una relazione “uno a uno” tra Download e Album e non
riesco a far salvare l’id esterno in una delle due tabelle. Praticamente
creo un download (e fin qui tutto bene, infatti si salva l’id dell’album
in Download nel campo album_id), solo che nella tabella Album, nella
quale c’è il campo download_id, non si va a salvare l’id del download
che ho appena creato.

Ho provato a fare questa cosa nel download_controller nel metodo create:

def create
@download = Download.new(params[:download])

respond_to do |format|
  if @download.save
    flash[:notice] = 'Download was successfully created.'
    format.html { redirect_to(@download) }
    format.xml  { render :xml => @download, :status => :created,

:location => @download }

   @album = Album.find(:first, :conditions => ['id=?', @download.album_id])
   @album.download_id.update_attributes(@download.id)
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @download.errors, :status =>

:unprocessable_entity }
end
end
end

ho messo lì le righe di codice aggiunte, perchè finchè non faccio
@download.save non devo andare a scrivere nella tabella Album.

Grazie mille.

Il 02 dicembre 2009 12.22, Lorenzo C. [email protected] ha
scritto:

Chiedo scusa per il titolo stupido, ma ci sto perdendo talmente tanto
tempo, che al posto di piangere mi metto a ridere. Comunque il mio
problema è: ho una relazione “uno a uno” tra Download e Album e non
riesco a far salvare l’id esterno in una delle due tabelle. Praticamente
creo un download (e fin qui tutto bene, infatti si salva l’id dell’album
in Download nel campo album_id), solo che nella tabella Album, nella
quale c’è il campo download_id, non si va a salvare l’id del download
che ho appena creato.

ciao,

in una relazione uno a uno, la chiave esterna deve essere messa in una
sola tabella, nella quale si scriverà belongs_to :altraclasse, mentre
nell’altra classe si scriverà has_one :primaclasse, senza che la sua
tabella contenga chiave esterna.

pietro

2009/12/2 Pietro G. [email protected]:

ciao,

in una relazione uno a uno, la chiave esterna deve essere messa in una
sola tabella, nella quale si scriverà belongs_to :altraclasse, mentre
nell’altra classe si scriverà has_one :primaclasse, senza che la sua
tabella contenga chiave esterna.

Ciao,

a volte aiuta vedere la relazione uno-a-uno come un caso particolare
di una più generale relazione uno-a-molti: il caso, in pratica, in cui
il lato molti ha numericità pari a 1. Dal punto di vista del DB non
c’è infatti alcuna differenza tra relazioni uno-a-uno e uno-a-molti.

Spero di non averti confuso (nel caso fai come se questo messaggio non
fosse mai esistito).

Ciao,
Silvano


Considera l’ambiente prima di stampare questa email. Dai, che
l’equazione è semplice: meno A4, più alberi.

. . . Silvano S. . . .
email: [email protected]
site: http://www.sistrall.it

Risolto tutto, grazie mille!!