Relation model: trova l'errore

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]

diversifica i nomi delle relazioni software in User specificando la
foreign
key e il class name
Il 01/nov/2013 10:52 “FleX” [email protected] ha scritto:

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]

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
Card: http://zerp.ly/ju-liu

Societ Cooperativa weLaika
Corso Vigevano 14/B, 10154 Torino (TO), Italy
http://welaika.com - [email protected]

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]