C'est juste parfait... J'ai donc écris le code ci dessous.

*Model :*
je crée un model générique :

class ExoAlea
  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?
    #  une validation par défaut
  end 

  def enunciated
   #  un enoncé par défaut
  end
end

puis un model par exercice spécifique :
class ExoDiscriminant < ExoAlea
  def result_valid?
     # Validation spécifique
  end

  def enunciated
    # Énoncé spéfique
  end
end


*Views*
Dans ma vue show , j'utilise la méthode @exoAlea.enunciated et j'enlève le 
helper. 
J'aurai donc une seule vue pour tous mes 1000 exercices. C'est top ! 


*Question 1 : Ma vue show.html.erb doit être dans le dossier app/exoAlea ? 
ou dans le dossier app/Exo_discriminant ? ou dans layout ?*

*Controller *

Comment se nomme ce controller ? exo_alea_controller ou 
exo_discriminant_controller ? 

Dans le contrôleur, te me dis "tu n'a juste a changer la classe instanciée".
Si je comprends bien c'est le controller qui se nomme exo_alea_controller.
Dans ce controller, comment je change la classe instanciée ? je peux la 
nommée @exoAlea.enunciated ?



*Question 2 : Est ce que le controller resemble donc à ça ?*

class ExoAleaController < ApplicationController
  before_action :set_exo_alea, only: [:show, :edit, :update, :destroy, 
:validation]

  # GET /exo_alea 
  # GET /exo_alea.json
  def index
    @exo_alea= ExoAlea.all
  end

  # GET /exo_alea/1
  # GET /exo_alea/1.json
  def show
    @exo_alea= ExoAlea.find(params[:id])
    @a=rand(20)-rand(20)
    @b=rand(2..7)
    @c=rand(20)-rand(20)
    @d=rand(2..7) 
  end

  # GET /exo_alea/new
  def new
    @exo_alea= ExoAlea.new
  end

  # GET /exo_alea/1/edit
  def edit
  end

  # POST /exo_alea  
  # POST /exo_alea.json
  def create
    @exo_alea= ExoAlea.new(exo_alea_params)

    respond_to do |format|
      if @exo_alea.save
        format.html { redirect_to @exo_alea, notice: 'Exo sumfraction was 
successfully created.' }
        format.json { render :show, status: :created, location: 
@exo_sumfraction }
      else
        format.html { render :new }
        format.json { render json: @exo_alea.errors, status: 
:unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /exo_sumfractions/1
  # PATCH/PUT /exo_sumfractions/1.json
  def update
    respond_to do |format|
      if @exo_alea.update(exo_alea_params)
        format.html { redirect_to @exo_alea, notice: 'Exo alea was 
successfully updated.' }
        format.json { render :show, status: :ok, location: @exo_alea}
      else
        format.html { render :edit }
        format.json { render json: @exo_alea.errors, status: 
:unprocessable_entity }
      end
    end
  end

  # DELETE /exo_alea/1
  # DELETE /exo_alea/1.json
  def destroy
    @exo_alea.destroy
    respond_to do |format|
      format.html { redirect_to exo_alea_url, notice: 'Exo alea was 
successfully destroyed.' }
      format.json { head :no_content }
    end
  end

    private

    def set_exo_alea
      @exo_alea= ExoAlea.find(params[:id])
    end

    def exo_alea_params
      params.require(:exo_alea).permit(:title, :text, :help, :string, :time)
    end

end

Bon quand tu auras répondu à ces 2 questions, j'espère que tu m'auras donné 
la solution.

Merci infiniment.

-- 
-- 
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 à