Salut c'est encore moi !

Pour l'instant je maintiens mon approche. En effet, celle que tu m'as
montré impose tout de même que les événements soient créés dans l'ordre
chronologique : si on fait le traitement lors de la création, cela signifie
que à ce moment précis il faut que tous les événements influençables soient
déjà créés.
Mon approche permet de s'en affranchir : on crée dans l'ordre que l'ont
veut, et c'est lors de la consultation de la story (suite d'événements)
qu'on fait le traitement et qu'on modifie les événements en fonction
d'autres événements.

Je reste avec un code qui est peu ou prou :

def compute_events
  # create deduced events
  events.each do |e|
    if e.naissance?
      event.build(:name => "majeur", :date => e.date + 18.years)
    end
  end
  return events.sort_by &:date
end

Ma question est que, toujours dans cette méthode, je veux repasser
l'ensemble de mes événements, et effectuer des recherche dans cette liste
(c'est la partie "les événements influencent d'autres événements" : je les
repasse tous et j'annule ou modifie les événements ultérieurs).
Si j'utilise "events.where()", je lance une requête SQL dans la table, et
je ne trouverai donc pas les événements créés précédemment par le build().
J'ai tenté le scope, mais il se passe la même chose : requete SQL.

Comment faire ?

Merci !

gUI

Le 2 septembre 2014 17:24, Guirec Corbel <guirec.cor...@gmail.com> a écrit :

> Et pourquoi ne pas faire un cas du genre :
>
> class Story
>   def prison!
>     event = events.find(type: Event::MAJORITY)
>     event.update_attribute('date', event.date + 3.years)
>   end
> end
>
>
> Le 2 septembre 2014 11:09, Guillaume Betous <guillaume.bet...@gmail.com>
> a écrit :
>
>>
>> Pourquoi n'ajoutes tu pas un événement persistant à la création de
>>> l'événement "naissance" plutôt que de l'ajouter "à la volé"?
>>>
>>
>> J'ai anonymisé l'appli (rien à voir avec des naissances et des âges de
>> majorité) et en réalité il y a énormément d'événements enregistrés qui
>> influent sur ces événements générés. C'est comme si un accident de la vie
>> faisait que tu ne sois pas majeur à 18 ans. Ou plus tôt. Imaginons que ce
>> soit le cas avec un emprisonnement qui te décale ta majorité, ou que le
>> mariage te donne une majorit anticipée.
>>
>> Du coup une fois ma liste "enrichie" générée, je vais la re-parcourir
>> pour la vider des aberrations (style tu es 2x majeur dans ta vie, à 17 ans
>> et à 18 ans). Les événements enregistrés, eux, sont intangibles. Ca c'est
>> réellement passé. Les autres, c'est justement le but de l'appli, sont là
>> pour te donner les jalons qui t'attendent.
>> Le UseCase typique (et toujours anonymisé :) : "bonjour, je me suis marié
>> à 17 ans et demi, mais j'ai fais 3 mois de prison à l'âge de 15 ans, à quel
>> âge serai-je majeur ?"
>>
>> Bref c'est encore un peu compliqué dans ma tête, et comme il n'y aura
>> qu'une dizaine d'événements dans une story, je me suis dit que
>> l'implémentation naïve était finalement peut-être pas si mauvaise.
>>
>> 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 à