# ActiveRecord Callback

**URL:** <https://www.ruby-forum.com/t/activerecord-callback/143030>\
**Category:** IT\
**Created:** [July 14, 2008, 5:05pm UTC](https://www.ruby-forum.com/t/activerecord-callback/143030 "2008-07-14T17:05:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Piero\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/57b2e6/32.png) [@Piero\_B](https://www.ruby-forum.com/u/Piero_B)\
**Post date:** [July 14, 2008, 5:05pm UTC](https://www.ruby-forum.com/t/activerecord-callback/143030/1 "2008-07-14T17:05:51Z")

</div>

Ciao a tutti,  
vi pongo un piccolo problema:  
sto lavorando con active record in una applicazione non rails.  
Riassumendo ho 2 tabelle 1-1,  
una relativa al cliente (consumer) e una tabella ‘piatta’ relativa a  
dati non definibili a priori come quantità e tipo.

Ogni qualvolta inserisco un nuovo cliente devo inserire un record  
nella tabella piatta con consumer\_id settato.  
Pensavo di utilizzare un callback ma after\_save viene invocato sempre  
e comunque (creazione e aggiornamento)  
mentre after\_create viene richiamato quando il record non è ancora  
salvato sul db, quindi non ho a disposizione  
l’id del cliente.  
Devo utilizzare active\_record e non eventuali triggers su db per fare  
questa cosa perchè l’app è multidatabase (oracle, mysql e mssql)

Posso utilizzare qualcos’altro, idee?  
Grazie 1000

Piero

–

* * *

Piero B.  
My Blog: [cookedapple.net](http://cookedapple.net)  
LinkedIn: [http://www.linkedin.com/in/pbozzolo](http://www.linkedin.com/in/pbozzolo)  
Linux User #403396

Please consider the environment before you print this email

---

<div class="post-metadata">

**Author:** ![Piero\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/57b2e6/32.png) [@Piero\_B](https://www.ruby-forum.com/u/Piero_B)\
**Post date:** [July 14, 2008, 6:46pm UTC](https://www.ruby-forum.com/t/activerecord-callback/143030/2 "2008-07-14T18:46:01Z")

</div>

Ciao Piero,  
Se nella tua classe hai la macro ‘has\_one’, puoi fare  
così:  
def after\_create  
self..create  
end

## Luca

blog: [www.lucaguidi.com](http://www.lucaguidi.com)  
Pro-Netics: [www.pro-netics.com](http://www.pro-netics.com)  
Sourcesense - making sense of Open Source: [www.sourcesense.com](http://www.sourcesense.com)

---

<div class="post-metadata">

**Author:** ![Piero\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/57b2e6/32.png) [@Piero\_B](https://www.ruby-forum.com/u/Piero_B)\
**Post date:** [July 14, 2008, 6:46pm UTC](https://www.ruby-forum.com/t/activerecord-callback/143030/3 "2008-07-14T18:46:01Z")

</div>

> mentre after\_create viene richiamato quando il record non è ancora  
> salvato sul db, quindi non ho a disposizione  
> l’id del cliente.

Non è vero…

$ script/generate model Pippo  
$ rake db:migrate

class Pippo \< ActiveRecord::Base  
def after\_create  
puts “my id is: #{self.id}”  
end  
end

$ script/console  
Loading development environment.

> > Pippo.create  
> > my id is: 1  
> > =\> #\<Pippo:0x1332b50 @new\_record=false, @attributes={“id”=\>1},  
> > @errors=#\<ActiveRecord::Errors:0x1306e74 @base=#\<Pippo:0x1332b50 …\>,  
> > @errors={}\>\>

---

<div class="post-metadata">

**Author:** ![Piero\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/57b2e6/32.png) [@Piero\_B](https://www.ruby-forum.com/u/Piero_B)\
**Post date:** [July 15, 2008, 9:28am UTC](https://www.ruby-forum.com/t/activerecord-callback/143030/4 "2008-07-15T09:28:29Z")

</div>

Grazie a tutti e due!  
avevo letto/capito male la documentazione dei callbacks, mea culpa!

Grazie!

–

* * *

Piero B.  
My Blog: [cookedapple.net](http://cookedapple.net)  
LinkedIn: [http://www.linkedin.com/in/pbozzolo](http://www.linkedin.com/in/pbozzolo)  
Linux User #403396

Please consider the environment before you print this email
