[Rails] Problema di ereditarietÃ

Ciao a tutti.
Sto cercando di riprodurre un esempio dal mio libro di rails…
Mi ritrovo con il mio controller…

class Prodotti < ActiveRecord::Base
validates_presence_of :Prodotto, :Descrizione
validates_numericality_of :prezzo
validates_uniqueness_of :Prodotto

   validate :prezzo_non_inferiore_a_un_centesimo

   protected #Metodo di controllo del prezzo

def prezzo_non_inferiore_a_un_centesimo
errors.add(:prezzo, ‘deve essere superiore a 0.01’) if prezzo.nil?
|| prezzo < 0.01
end
end

mi chiedevo come fosse possibile richiamare (ereditando dalla classe
“Base”) direttamente metodi come “validates_presence_of” visto che in
“Base” questi metodi non sono presenti (vedere anche il seguente link
alle api).

ringrazio anticipatamente tutte le persone che mi risponderanno.

Base include il modulo Validations.

Luca G. wrote:

Base include il modulo Validations.

Quindi, se non ho capito male:

1)Validation estende Validations::ClassMethods quindi ne eredita tutti i
metodi
2)Base include Validation
3)Io posso usare i metodi di Validations::ClassMethods estendendo Base
in questo modo:

Class Prodotti < ActiveRecord::Base

giusto?

Il giorno 15 Luglio 2009 18.02, pezzuya …[email protected] ha
scritto:

giusto?
giusto.

pietro

Se non ricordo male dovrebbe essere:

  1. Base include Validations
  2. Viene invocato lo speciale metodo di callback “included” di
    Validations
  3. All’interno di included viene eseguito extend su Base, passando
    Validations::ClassMethods come parametro

Tutto questo avviene quando ActiveRecord viene caricato, quando la tua
classe estende Base, eredita quei metodi di classe.

Luca

Grazie a tutti :wink:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs