# Purpose of after\_initialize in ActiveRecord?

**URL:** <https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815>\
**Category:** Rails\
**Created:** [October 27, 2006, 8:53am UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815 "2006-10-27T08:53:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [October 27, 2006, 8:53am UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/1 "2006-10-27T08:53:57Z")

</div>

All,

I have a quick question - is the purpose of implementing  
after\_initialize to allow custom attribute initialization for AR  
descendants?

I have been overriding initialize whenever I require custom setup of my  
model classes, like so:

def initialize(attributes = nil)  
super  
self.Status = ‘G’  
end

So I have a couple of questions:

1. Could I achieve the same result as above with

def after\_initialize  
self.Status = ‘G’  
end  
?

1. Due to the specialities about how ActiveRecord descendants are  
created, is it somehow “better” to use after\_initialize vs. overriding  
initialize directly?

2. Can anyone share some other useful application of after\_initialize  
besides doing attribute initialization?

Thanks,  
Wes

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [October 27, 2006, 12:05pm UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/2 "2006-10-27T12:05:21Z")

</div>

You should use after\_initialize or you might find yourself running into  
some weird errors.

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [October 27, 2006, 7:19pm UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/3 "2006-10-27T19:19:07Z")

</div>

What is the correct method visibility for after\_initialize?

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [October 28, 2006, 9:03pm UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/4 "2006-10-28T21:03:50Z")

</div>

On 10/27/06, removed\_email\_address@domain.invalid [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> You should use after\_initialize or you might find yourself running into  
> some weird errors.

What kind of errors and why? Calling super before your own init code  
seems logically equivelent to a filter and is more simple/OO. If  
using good OO design principles breaks the framework (FYI, this hasn’t  
bitten me) I’d argue the framework needs fixing. Either way, it’s  
helpful to get an explanation so we all learn something rather than  
just sying “don’t do that, it’s bad.”

Thanks,

pt.

> >

–  
Parker T.

> **[ParkErt.com is for sale | HugeDomains](https://www.hugedomains.com/domain_profile.cfm?d=parkert.com)**
>
> Join thousands of people who own a premium domain. Affordable financing available.

510.541.0125

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [October 27, 2006, 8:46pm UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/5 "2006-10-27T20:46:15Z")

</div>

On 10/27/06, Wes G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> What is the correct method visibility for after\_initialize?

protected

## – Kent

> **[DATANOISE.COM](https://www.datanoise.com/)**
>
> DATANOISE.COM - Contact us for any business inquiries

---

<div class="post-metadata">

**Author:** ![weyus](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/7ab992/32.png) [@weyus](https://www.ruby-forum.com/u/weyus)\
**Post date:** [May 5, 2010, 3:18am UTC](https://www.ruby-forum.com/t/purpose-of-after-initialize-in-activerecord/73815/6 "2010-05-05T03:18:55Z")

</div>

See here

> **[Rails: Don't override initialize on ActiveRecord objects](https://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-on.html)**
>
> ActiveRecord::Base doesn't always use new to create objects, so initialize might not be called. I wanted to use a Hash on an ActiveRecord...
