Salvare un metodo nel db


#1

Salve a tutti,

sono un principiante, spero perdonerete se la mia domanda non
è posta nel modo corretto.

Non riesco a capire se è possibile salvare il risultato di un metodo
in una nuova colonna della rispettiva tabella.

es: def new_price
new_price = self.price * self.terms / 100
end

Grazie


#2

Ciao Marco,

si sto utilizzando rails + active record.

sei stato molto esaustivo, facevo tutto bene fino alla migrazione
ma sbagliavo col metodo pensavo bastasse solo dichiararlo,ma grazie a te
e alla lettura del codice ho capito cosa devo fare.
(perdona se non uso i termini giusti;-).

Grazie.


#3

Ciao Michele,

dovresti specificare se stai usando rails e quale orm. Se sei un
principiante suppongo tu stia utilizzando rails + active record, in tal
caso devi prima aggiungere la colonna:

crei la migrate (modifica al db)

rails g migration AddNewPriceToArticles new_price:decimal{7,2}

applichi la migrate

rake db:migrate

ora puoi utilizzare il nuovo campo:

def calculate_new_price
self.update_attributes new_price: self.price * self.terms / 100
end

Il tuo metodo che calcola il valore deve avere un nome differente dal
nome del campo altrimenti sovrascriveresti quello che rails crea in
automatico e quando lo utilizzi non riceveresti più il contenuto del db.

In pratica succederebbe questo:

class Pippo
attr_accessor :nome

Stai forzando il metodo

def nome
‘Test’
end
end

p=Pippo.new
=> #Pippo:0x79e02e8

p.nome= ‘Filippo’
=> “Filippo”

p.nome
=> “Test”