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:
- Base include Validations
- Viene invocato lo speciale metodo di callback “included” di
Validations
- 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