J'ai parfaitement compris, merci beaucoup pour la réactivité ! gUI
Le 1 septembre 2014 23:07, Francis <francis...@gmail.com> a écrit : > Disclaimer: désolé de mon français, qui n'est pas trop bon > > > http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many > > collection<<(object, …) > Adds one or more objects to the collection by setting their foreign keys > to the collection's primary key. Note that this operation instantly fires > update SQL without waiting for the save or update call on the parent > object, unless the parent object is a new record. > > si tu veux pas garder l'event dans ta base de données, tu peux changer > > x = Event.new(:name => "majeur", :date => e.date + 18.years) > events << x > > par > > events.build(:name => "majeur", :date => e.date + 18.years) > > (il faut pas faire events = self.events) > > J'espère que vous pourrez comprendre :D > > > 2014-09-01 23:02 GMT+02:00 Guillaume Betous <guillaume.bet...@gmail.com>: > >> Bonjour, >> >> Une question qui se pourrait être purement Ruby en fait, mais je >> soupçonne quand même Rails de trafiquer dans mon dos :) >> >> J'ai des histoires (stories) dans lesquelles on peut enregistrer des >> événements (events). Ce sont des ressources imbriquées classique (story >> has_many events). >> >> A l'affichage d'une story (methode 'show') je liste les événements créés, >> mais je veux en afficher d'autres, automatiquement générés. >> >> Exemple d'affichage d'une histoire que je cherche : >> >> * naissance (05/12/2000) <= c'est un événement qui a été enregistré >> par l'utilisateur >> * entrée école (01/09/2005) <= c'est un autre événement qui a été >> enregistré par l'utilisateur >> * majeur (05/12/2018) <= celui-là, c'est le modèle "story" qui le >> crée à la volée, parce que on sait bien que à 18 ans il sera majeur >> >> Voici le code que j'ai fait. >> >> Dans le story_controler : >> >> def show >> @events = @story.compute_events >> end >> >> Dans le modèle : >> >> def compute_events >> events = self.events >> events.each do |e| >> if e.name == "naissance" >> x = Event.new(:name => "majeur", :date => e.date + 18.years) >> events << x >> end >> end >> return events >> end >> >> Mon soucis c'est que ça marche... trop ! En effet, cela me crée dans la >> base l'event correspondant (il a bien un nouvel id, et a bien la clée >> étrangère de ma story). En reloadant ma page de "show", je vois de nouveaux >> events arriver. >> >> * naissance (05/12/2000) >> * entrée école (01/09/2005) >> * majeur (05/12/2018) >> * majeur (05/12/2018) >> * majeur (05/12/2018) >> * majeur (05/12/2018) >> * majeur (05/12/2018) >> * etc... >> >> Bref : >> 1 - Comment se fait-il ? >> 2 - Comment dois-je faire ? >> >> Merci ! >> >> gUI >> >> -- >> Pour la santé de votre ordinateur, préférez les logiciels libres. >> Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/ >> Browser le web : http://www.mozilla-europe.org/fr/products/firefox/ >> Suite bureautique : http://www.libreoffice.org/download/ >> >> -- >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> railsfrance@googlegroups.com >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> railsfrance-unsubscr...@googlegroups.com >> --- >> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes >> "Railsfrance". >> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le >> concernant, envoyez un e-mail à l'adresse >> railsfrance+unsubscr...@googlegroups.com. >> Pour obtenir davantage d'options, consultez la page >> https://groups.google.com/d/optout. >> > > -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > railsfrance@googlegroups.com > Pour résilier votre abonnement envoyez un e-mail à l'adresse > railsfrance-unsubscr...@googlegroups.com > --- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > "Railsfrance". > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse > railsfrance+unsubscr...@googlegroups.com. > Pour obtenir davantage d'options, consultez la page > https://groups.google.com/d/optout. > -- Pour la santé de votre ordinateur, préférez les logiciels libres. Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/ Browser le web : http://www.mozilla-europe.org/fr/products/firefox/ Suite bureautique : http://www.libreoffice.org/download/ -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout .