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 .

Répondre à