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 ?
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:
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
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.