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.phili...@lfbogota.com> 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 > 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 plus d'options, visitez le site https://groups.google.com/d/optout .