Je vois ce que tu veux dire mais il y a une validation pour chaque exo. Donc la méthode def result_valid? n'est pas unique.
Donc je ne peux rien mettre dedans def result_valid? # Ta méthode validate dans ton contrôleur. Je garde alors mon controller avec la méthode dedans. c'est ça ? * end * * def enunciated* * # Même chose que dans ton helper. *Lequel ? J'ai un helper par exo ! * end* Le mercredi 15 avril 2015 11:47:01 UTC-5, Guirec Corbel a écrit : > > Je vais te donner un exemple potentiel (non testé) pour ton code. > > class ExoDiscriminant > include Mongoid::Document > include Mongoid::Timestamps > > field :title, type: String > field :text, type: String > field :help, type: String > field :time, type: Integer > field :reponseStudent, type: Integer > field :a, type: Integer > field :b, type: Integer > field :c, type: Integer > field :d, type: Integer > > validates :title, presence: true > validates :text, presence: true > validates :time, presence: true > validates :help, presence: true > validates :reponseStudent, presence: true, on: :validation > > validate :valid_answer, on: :update > > def valid_answer > errors.add(:anwser, "Réponse fausse") unless result_valid? > end > > def result_valid? > # Ta méthode validate dans ton contrôleur. > end > > def enunciated > # Même chose que dans ton helper. > end > end > > À partir de ça, dans ton contrôleur, tu n'a juste a changer la classe > instanciée. Tu peux ensuite utiliser la méthode @exo.enunciated dans ta > vue, à la place de ton helper. > > Avec l'héritage tu auras une base comme ceci : > > class Exo > # ... > > def result_valid? > # une validation par défaut si tu en a > end > > def enunciated > # un énoncé par défaut si tu en a > end > end > > et des classes enfants comme ceci : > > class ExoDiscriminant < Exo > def result_valid? > # Validation spécifique pour les discrimiants > end > > def enunciated > # Énoncé spéfique > end > end > > Est-ce que tu vois ce que je veux dire ? > > Le 15 avril 2015 12:34, Philippe Demaria <demaria....@lfbogota.com > <javascript:>> a écrit : > >> Justement, je ne voudrais pas passer par le stockage en bdd. >> les exercices étant alétoires, je ne veux pas utiliser d'enregistrement >> en base de données. Comme cela avec un type d'exo, j'ai une infinité d'exo. >> Je vais potasser ton tuto rails : samurails. >> Mais comme je vais avoir à peu près 1000 types d´exo différents, j'essaie >> tout de suite de partir bien..... >> >> Je ne comprends pas trop ton idée : >> *D'après ce que je comprend, tu as uniquement le helper et la validation >> qui change*. OUI >> *La première chose à faire, ça serait de ramener ces deux éléments dans >> le modèle*. Dans quel model ? >> *Ta vue, ton controlleur et ton helper seront donc tous les même. *Comment >> peuvent ils être les mêmes ? >> >> Je dois un "peu" potasser..... >> >> >> Le mercredi 15 avril 2015 09:26:12 UTC-5, Guirec Corbel a écrit : >>> >>> Apparemment oui mais la solution est variables car les variables ( au >>> sens mathématique ) sont aléatoires. Les solutions doivent donc êtres >>> calculées. >>> >>> Ça serait possible de stocker la formule dans la base de données et de >>> l’exécuter en faisant une interpolation des variables. Si le chaîne "@a + >>> @b - @c" est stockée, tu peux faire un eval de cette chaîne pour vérifier >>> le résultat avec les variables. Je pense que ça peut fonctionner. >>> >>> Le 15 avril 2015 10:20, thierry henrio <thierry...@gmail.com> a écrit : >>> >>>> 2015-04-15 16:02 GMT+02:00 Philippe Demaria <demaria....@lfbogota.com>: >>>> >>>>> Voici les fichiers pour le calculs de relatifs par exemple. >>>>> le model est le même >>>>> >>>>> Est-ce qu'un exercice a une seule solution ? >>>> >>>> ?, Thierry >>>> >>>> -- >>>> -- >>>> 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 rails...@googlegroups.com >>>> Pour résilier votre abonnement envoyez un e-mail à l'adresse >>>> railsfrance...@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...@ >>>> 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 >> rails...@googlegroups.com <javascript:> >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> railsfrance...@googlegroups.com <javascript:> >> --- >> 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...@googlegroups.com >> <javascript:>. >> 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 plus d'options, visitez le site https://groups.google.com/d/optout .