# Salvare un metodo nel db

**URL:** <https://www.ruby-forum.com/t/salvare-un-metodo-nel-db/244365>\
**Category:** IT\
**Created:** [March 28, 2016, 12:50pm UTC](https://www.ruby-forum.com/t/salvare-un-metodo-nel-db/244365 "2016-03-28T12:50:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [March 28, 2016, 12:50pm UTC](https://www.ruby-forum.com/t/salvare-un-metodo-nel-db/244365/1 "2016-03-28T12:50:00Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mike575](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/96bed5/32.png) [@mike575](https://www.ruby-forum.com/u/mike575)\
**Post date:** [March 29, 2016, 7:23pm UTC](https://www.ruby-forum.com/t/salvare-un-metodo-nel-db/244365/2 "2016-03-29T19:23:56Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mike575](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/96bed5/32.png) [@mike575](https://www.ruby-forum.com/u/mike575)\
**Post date:** [March 29, 2016, 6:28pm UTC](https://www.ruby-forum.com/t/salvare-un-metodo-nel-db/244365/3 "2016-03-29T18:28:45Z")

</div>

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”
