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 .

Répondre à