# Relazioni pericolose

**URL:** <https://www.ruby-forum.com/t/relazioni-pericolose/179708>\
**Category:** IT\
**Created:** [December 2, 2009, 12:22pm UTC](https://www.ruby-forum.com/t/relazioni-pericolose/179708 "2009-12-02T12:22:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [December 2, 2009, 12:22pm UTC](https://www.ruby-forum.com/t/relazioni-pericolose/179708/1 "2009-12-02T12:22:14Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [December 2, 2009, 12:39pm UTC](https://www.ruby-forum.com/t/relazioni-pericolose/179708/2 "2009-12-02T12:39:28Z")

</div>

Il 02 dicembre 2009 12.22, Lorenzo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [December 2, 2009, 12:51pm UTC](https://www.ruby-forum.com/t/relazioni-pericolose/179708/3 "2009-12-02T12:51:46Z")

</div>

2009/12/2 Pietro G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 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: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
site: [http://www.sistrall.it](http://www.sistrall.it)

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [December 2, 2009, 1:02pm UTC](https://www.ruby-forum.com/t/relazioni-pericolose/179708/4 "2009-12-02T13:02:06Z")

</div>

Risolto tutto, grazie mille!!
