Classi aperte in ror


#1

Ciao a tutti,

voglio definire un metodo per la classe Float che arrotondi alla n-esima
cifra decimale:
ho guardato in giro ed ho trovato questo esempio che sfrutta il fatto
che in ruby le classi sono aperte e che quindi posso
aggiungere/sovrascrivere metodi:

class Float
def round(precision = nil)
if precision.nil? then
super()
else
if precision.is_a? Integer and precision > 0 then
decimals = 10 ** precision
(self * decimals).round / decimals.to_f
else
raise ArgumentError.new(“Argument must be a positive
integer”)
end
end
end
end

in un’applicazione ruby on rails dove definisco questa classe per
utilizzare questo metodo in una action ? Dove apro questa definizione di
classe ?

Grazie.

Luigi


#2

Ciao,
puoi creare un file float_ext.rb ed inserirlo nella directory lib della
tua
applicazione, poi nel file enviroment.rb aggiungi questa riga
require ‘float_ext’
ciao

Il giorno 3 dicembre 2008 15.56, Luigi M. removed_email_address@domain.invalid ha
scritto:


#3

Ok, grazie… !! :slight_smile:

Luigi

Pierpaolo S. ha scritto:


#4

Prima non ci avevo fatto caso, ma il metodo round esiste già in Rails
precisamente in
ActiveSupport::CoreExtensions::Float::Rounding

Il giorno 3 dicembre 2008 18.00, Luigi M. removed_email_address@domain.invalid ha
scritto: