# Where to I put code accessible in all model?

**URL:** <https://discuss.rubyonrails.org/t/where-to-i-put-code-accessible-in-all-model/45759>\
**Category:** rubyonrails-talk\
**Created:** [September 3, 2009, 1:43pm UTC](https://discuss.rubyonrails.org/t/where-to-i-put-code-accessible-in-all-model/45759 "2009-09-03T13:43:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![AppleII717](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/appleii717/32/3905_2.png) [@AppleII717](https://discuss.rubyonrails.org/u/AppleII717)\
**Post date:** [September 3, 2009, 1:43pm UTC](https://discuss.rubyonrails.org/t/where-to-i-put-code-accessible-in-all-model/45759/1 "2009-09-03T13:43:54Z")

</div>

Even though I've been "playing" with RoR since before 1.0, I've never got a good grasp on where you put code!

Code or helper method placed in helpers can only be called from views, if I'm not mistaken.

Code that is specific to a model or controller is also a no-brainer - but what about code that you want to share in different models/ controllers.

What if I have a function unformatPhone that I want to call in a model's before\_save event - where to I stick it so that it can be called by all models and maybe even from a view?

Is my only choice in the application\_controller? Is that a good choice?

The unformatPhone example may be trivial since it is only a regexp replace, but what if it is something more complex. I looked around for something that would set the case of proper names and found something on github ([GitHub - tenderlove/namecase: Properly case people's names](http://github.com/tenderlove/namecase/tree/master)) which is a class. Where do I stick that?

If anyone can point me to a good tutorial on where you put code, I'd be thankful.

---

<div class="post-metadata">

**Author:** ![Frederick\_Cheung](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/frederick_cheung/32/3901_2.png) [@Frederick\_Cheung](https://discuss.rubyonrails.org/u/Frederick_Cheung)\
**Post date:** [September 3, 2009, 2:42pm UTC](https://discuss.rubyonrails.org/t/where-to-i-put-code-accessible-in-all-model/45759/2 "2009-09-03T14:42:14Z")

</div>

> To share code between models, you have the same two choices that you have for sharing code between \*any\* classes (remember, there's nothing magical about models):
> 
> 1. Put it in a module and include it in the models you want to use it, or 2. Create a subclass of ActiveRecord, put the code there, and have the models inherit from that.

or 3, decide that this code deserves to be in a class of its own.

Fred
