Un seul formulaire pour deux models

Bonjour,

J’ai du mal à trouver de la documentation pour mon problème.

Pour le développement d’un jeu qui utilise une bdd, j’ai choisi de faire
mes tests d’algo en ruby pour aller plus vite.
Mais je rencontre un problème lié à la structure que j’ai choisi pour ma
bdd.

Je simplifie. J’ai quatre modèles (table) :

  • race
  • classe
  • item
  • attributList

Race, Classe et Item ont une liste de points d’attributs strictement
identiques (force, vitesse…). J’ai donc décidé de faire une table
AttributList à part et de faire de cet objet une propriété de race,
classe et item.
Donc dans les models de race, class et item, j’ai :
has_one :attributList

et dans le model d’attributList j’ai
belongs_to :race
belongs_to :classe
belongs_to :item

Je me demande si c’est correct ? (première question)

Ensuite, la question principale, c’est comment je peux faire pour qu’Ã
la création d’une nouvelle classe, par exemple, l’utilisateur crée
automatiquement la liste d’attribut associé ?
Je veux dire que le formulaire de création d’une classe doit comporter
les champs spécifiques au modèle “classe”, mais aussi tout ceux
d’attributList. Après validation du formulaire il faut que l’objet
AttributList soit crée en premier pour que je puisse récupérer sa clé
étrangère et l’insérer dans attributList_id dans le modèle Classe.
Je ne sais pas faire ça :S
Est-ce que quelqu’un pourrait m’expliquer la marche à suivre, ou
m’indiquer une documentation (en anglais ou français peu importe) ? Je
n’en ai pas trouvé.

(pour info je suis sous Ruby 1.8.6 et Rails 2.0.2, mais pour Rails je
peux passer à une version plus récente si besoin pour ce projet puisque
ce sont des tests).

Bonjour,

  1. tu aimes vivre dangereusement : la class Classe sa sens bon les
    problèmes
    (attention au plurialize singularize… “classes”.singularize #=> class
    (et
    là c’est le drame)
  2. peux tu donner un exemple un peut plus concret de Classe et
    d’attributs
    (ce que doit choisir l’utilisateur et ce qui doit être automatique)
  3. regarde toujours du côté des guides rails et des railscast de Ryan
    Bates

2009/4/30 Lily B. [email protected]

Bonjour,

  1. Oui, je m’en suis rendue compte en créant ma table, je peux changer
    le nom de cette table sans problème.

  2. J’essaie d’être plus claire pour les modèles

Table Classe :
id:integer
nom:string
attributlist_id:integer

Table Item:
id:integer
nom:string
prix:integer
attributlist_id:int

Table AttributList:
id:integer
force:integer
vitesse:integer

Dans le formulaire new Classe, l’utilisateur doit remplir les champs :

  • nom
  • force
  • vitesse

A l’issue de l’opération, il doit y avoir une nouvelle entrée dans la
table AttributList et une nouvelle entrée dans la table Classe.

Un objet attributList est toujours crée de cette manière, via la
création d’un objet Classe ou Item. Il est absurde de créer un
attributList qui ne soit possédé par personne, et un attributList
appartient toujours à un objet d’une autre table, et à seulement UN.

Et donc ma question est de savoir comment faire un formulaire “new”
alors que je souhaite créer un attributList ET une classe, et que l’id
du nouvel attributList doit devenir la valeur de attributList_id dans
l’objet Classe.

J’espère que j’ai été un peu plus claire :S

  1. Vais voir de ce pas !