# Relation model: trova l'errore

**URL:** <https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254>\
**Category:** IT\
**Created:** [November 1, 2013, 10:52am UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254 "2013-11-01T10:52:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Detlef\_R](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@Detlef\_R](https://www.ruby-forum.com/u/Detlef_R)\
**Post date:** [November 1, 2013, 10:52am UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254/1 "2013-11-01T10:52:36Z")

</div>

Ciao,  
Mi trovo a dover creare le relazioni tra i seguenti modelli: User,  
Software ed Evaluation  
Le relazioni sono:  
User puo’ avere molti Software e molte Evaluation  
Software dipende da User (che lo crea) e puo’ avere molte Evaluation  
(ogni user puo’ dare un voto ad ogni software)  
Evaluation dipenda da User e da Software

Questi i modelli creati:

class User \< ActiveRecord::Base  
has\_many :softwares # Perche’ uno user puo’ creare molti software  
has\_many :evaluations  
has\_many :softwares, :through =\> :evaluations  
end

class Software \< ActiveRecord::Base  
belongs\_to :user  
has\_many :evaluations  
has\_many :users, :through =\> :evaluations  
end

class Evaluation \< ActiveRecord::Base  
belongs\_to :user  
belongs\_to :software  
end

Secondo i miei test questo modello non funziona.  
Dove sbaglio ?

–  
FleX  
[Linux User #347703 PGP Key ID: 98AA9D3E  
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [November 1, 2013, 11:43am UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254/2 "2013-11-01T11:43:26Z")

</div>

diversifica i nomi delle relazioni software in User specificando la  
foreign  
key e il class name  
Il 01/nov/2013 10:52 “FleX” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [November 1, 2013, 7:49pm UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254/3 "2013-11-01T19:49:32Z")

</div>

On 11/01/2013 11:42 AM, Massimo M. wrote:

> diversifica i nomi delle relazioni software in User specificando la foreign  
> key e il class name

Ma in che modo ? la foreign key in entrambi i casi e’ user\_id e la  
classe e’ sempre Software

–  
FleX  
[Linux User #347703 PGP Key ID: 98AA9D3E  
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [November 1, 2013, 8:38pm UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254/4 "2013-11-01T20:38:01Z")

</div>

Puoi passare all’associazione la chiave ‘class\_name’ per specificare una  
classe che ActiveRecord non riesca a inferire automaticamente:

class User \< ActiveRecord::Base  
has\_many :softwares  
has\_many :evaluations  
has\_many :evaluated\_softwares, class\_name: ‘Software’, through:  
:evaluations  
end

```
Ju

```

## –\* \*M.Sc. Ju Liu Twitter: @arkh4m [http://twitter.com/arkh4m](http://twitter.com/arkh4m) Card: [http://zerp.ly/ju-liu](http://zerp.ly/ju-liu)

Societ Cooperativa weLaika  
Corso Vigevano 14/B, 10154 Torino (TO), Italy  
[http://welaika.com](http://welaika.com) - removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![FleX](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/8baadc/32.png) [@FleX](https://www.ruby-forum.com/u/FleX)\
**Post date:** [November 1, 2013, 8:52pm UTC](https://www.ruby-forum.com/t/relation-model-trova-lerrore/237254/5 "2013-11-01T20:52:38Z")

</div>

On 11/01/2013 08:36 PM, Ju Liu wrote:

> Puoi passare all’associazione la chiave ‘class\_name’ per specificare una  
> classe che ActiveRecord non riesca a inferire automaticamente:
> 
> class User \< ActiveRecord::Base  
> has\_many :softwares  
> has\_many :evaluations  
> has\_many :evaluated\_softwares, class\_name: ‘Software’, through:  
> :evaluations  
> end

Logicamente quello che doveva cambiare era il nome dell’associazione  
dato che class\_name e through erano uguali.  
L’avevo capito 3 minuti dopo aver risposto a Massimo ed infatti funziona  
!  
Grazie ad entrambi per l’aiuto.

–  
FleX  
[Linux User #347703 PGP Key ID: 98AA9D3E  
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]
