[Rails] Association has_many :through - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Rails] Association has_many :through (/showthread.php?tid=5679) |
[Rails] Association has_many :through - popayan - 08-09-2011 Bonjour, Une petite question sur un point pas très clair pour moi, tout d'abord mes classes:
En plus de ca, ma classe Contract possède une durée. La question est, dans mon code, où puis-je initialiser cette durée? RE: [Rails] Association has_many :through - Sephi-Chan - 08-09-2011 Ton modèle de liaison Contact peut porter d'autres données que les foreign key. Tu peux lui donner des attributs comme pour n'importe quel modèle. Si tu veux donner une valeur par défaut à des attributs, je te conseille la très bonne gem default_value_for. Elle est très souple à l'utilisation. Si tu préfères le faire à la main, tu peux utiliser la méthode de callback after_initialize de ce modèle. Autrement, tu peux définir une valeur par défaut au niveau de la base de données (via une migration change_column_default).
Et ensuite, à l'utilisation :
Par ailleurs, je te déconseille de stocker la date de naissance dans un champ de type string, mais plutôt date ou datetime. Voici une alternative à ta méthode create_random_player. L'utilisation d'une variable d'instance (@p) n'était pas utile. De plus, fais attention à ce genre de méthodes si tu y mets vraiment du random : mieux vaut générer les valeurs aléatoire et les passer en argument, ça rend le code plus facile à tester unitairement.
RE: [Rails] Association has_many :through - popayan - 08-09-2011 Merci Sephi! Je cherchais cette notation :
j'ai eu beau avoir parcouru la doc, j'ai rien trouvé de semblable... par contre le "contract =" devant est obligatoire? Pour les autres remarques, merci c'est sympa de prendre du temps pour aider RE: [Rails] Association has_many :through - Viciousity - 08-09-2011 Bah c'est pas vraiment une notation spécifique à rails ;P C'est en fait lié à la version 1.9 de Ruby qui permet de noter les hash-symbole de manière différente.
RE: [Rails] Association has_many :through - Sephi-Chan - 09-09-2011 (08-09-2011, 09:58 PM)popayan a écrit : Je cherchais cette notation : L'affectation sert juste à mettre la valeur retournée — ici, une instance de la classe Contract — dans une variable. Concernant la notation, create (qui sauvegarde l'objet en base, contrairement à build, qui affecte juste les différents attributs) peut prendre en argument un hash d'attributs. En appelant cette méthode sur l'association, Rails affecte automatiquement la foreign key (puisqu'on construit un contrat pour la team, il sait quel est le team_id). Cf. ActiveRecord::Associations::ClassMethods où tu verras les méthodes pour chaque type d'association (belongs_to, has_one, has_many) ou le guide sur les associations. En Ruby, les parenthèses et accolades peuvent être optionnelles (tant que ce n'est pas ambigu). Ainsi, les notations suivantes sont rigoureusement équivalentes.
|