Paris on Rails 2008

Ouverture de session

Commentaires récents

Syndication
Flux XML

has_many et belongs_to vers le meme model dans le meme model...

has_many et belongs_to vers le meme model dans le meme model...
Posté par jb.feldis le Vendredi, 9 Novembre, 2007 - 3:17pm. Débuter avec Rails

Bonjour,

je viens solliciter votre aide sur un point assez spécial.

Nous avons 2 modèles, Upshot et User, et nous souhaitons que Upshot référence 2 fois User:

User{
has_many :upshots
has_many :works, :class_name => "Upshot"
}

Upshot{
belongs_to :User
has_many :customers, :class_name => "User"
}

Nous avons tenté comme ça mais aucun résultat.

Le but concret est d'avoir un User créateur d'un ou plusieurs Upshot mais chaque Upshot peut avoir de multiples clients (qui sont des User spécifiques).

A t'on raté quelquechose ?

Merci de votre aide,
si vous voulez des précisions n'hésitez pas !

Jean-Baptiste



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
la liaison entre upshot et
Auteur: 
dam5s
Date: 
Dim, 11/11/2007 - 19:30

la liaison entre Upshot et Customer (classe User) n'est pas correcte.
Il faudrait plutot:

User
  belongs_to :works, :class_name => "Upshot"

et donc il faut la clef etrangere qui s'appelle work_id qui se trouve dans la table Users :)

Par contre si un User peut etre client de plusieurs upshots il vous faudra utiliser has_and_belongs_to_many ou has_many :through

--
Damien
http://www.webdrivenblog.com/


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Salut, Merci pour ton
Auteur: 
fenreal
Date: 
Mer, 19/03/2008 - 01:42

Salut,

Merci pour ton aide.
Nous avions laissé ce point un peut de côté et nous repartons dessus. En suivant tes conseils, voici ce que nous avons maintenant :
class User < ActiveRecord::Base
has_many :upshots
has_many :works, :through => :upshotcustomers, :class_name => :upshot

class Upshot < ActiveRecord::Base
belongs_to :user
has_many :customers, :through => :upshotcustomers, :source => :user

class Upshotcustomer < ActiveRecord::Base
belongs_to :user, :foreign_key => "customer_id"
belongs_to :upshot

Nous avons utilisé un model de liaison pour avoir un commentaire pour chaque customer de chaque upshot.

Tout cela me semble correct mais j'ai une erreur que je ne comprends pas. La voici :
ActiveRecord::HasManyThroughAssociationNotFoundError in Home#index

Showing upshots/_worklist.html.erb where line #3 raised:

Could not find the association :upshotcustomers in model User

Si quelqu'un a une piste là dessus, ça serait de bon augure :)

Merci d'avance.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Sondage
Lorsque je développe avec Ruby on Rails c'est principalement sous:
Linux
37%
Mac OS X
30%
Windows
32%
(Free|Open|Net) BSD
1%
Autre...
1%
Nombre de votes: 374

Qui est en ligne
Il y a actuellement 1 utilisateur et 56 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Hébergement et ressources techniques gracieusement fournis par la SSLL Nuxos Group ]