Forum: Italian Ruby user group Relation model: trova l'errore

0d4857c0bd9540f743afc22758a06c46?d=identicon&s=25 FleX (Guest)
on 2013-11-01 10:52
(Received via mailing list)
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]
4beb0572f440ca9e9613126d4cbcf917?d=identicon&s=25 Massimo Maino (Guest)
on 2013-11-01 11:43
(Received via mailing list)
diversifica i nomi delle relazioni software in User specificando la
foreign
key e il class name
Il 01/nov/2013 10:52 "FleX" <flex@programmareweb.com> ha scritto:
0d4857c0bd9540f743afc22758a06c46?d=identicon&s=25 FleX (Guest)
on 2013-11-01 19:49
(Received via mailing list)
On 11/01/2013 11:42 AM, Massimo Maino 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]
1a45b192d0bbaf167afb43a41859e313?d=identicon&s=25 Ju Liu (Guest)
on 2013-11-01 20:38
(Received via mailing list)
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 - info@welaika.com
0d4857c0bd9540f743afc22758a06c46?d=identicon&s=25 FleX (Guest)
on 2013-11-01 20:52
(Received via mailing list)
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]
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.