Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is overriding ActiveRecord::Base.initialize wrong?

In several places, I've seen claims that overriding ActiveRecord::Base.initialize is wrong because it might not always be called:

  • How can I set default values in ActiveRecord?

  • http://blog.dalethatcher.com/2008/03/rails-dont-override-initialize-on.html

With never versions of ActiveRecord (3.0+), is this still true? If so, what specifically are the circumstances under which it is not called when one might expect that it would be?

like image 931
Ryan Hanks Avatar asked Jan 10 '12 14:01

Ryan Hanks


1 Answers

It's not that it won't be called, it's that there already is an initialize, in ActiveRecord::Base.

Could you call super? Probably, maybe, in general. Across Rails versions, including future ones? Reply hazy try again. Cannot predict now. Ask again later. Magic 8-Ball isn't convinced.

There's an initialize callback so you don't need to, and aren't tempted.

like image 166
Dave Newton Avatar answered Nov 15 '22 05:11

Dave Newton