# Where override model attribute names?

**URL:** <https://www.ruby-forum.com/t/where-override-model-attribute-names/117435>\
**Category:** Rails\
**Created:** [October 16, 2007, 9:25pm UTC](https://www.ruby-forum.com/t/where-override-model-attribute-names/117435 "2007-10-16T21:25:11Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [October 16, 2007, 9:25pm UTC](https://www.ruby-forum.com/t/where-override-model-attribute-names/117435/1 "2007-10-16T21:25:11Z")

</div>

OK, so I get that ActiveRecord determines model attributes through  
reflection of the table schema. Handy for many cases, but not mine.

I need to override that and provide my own mapping of attribute names  
to column names to use the mapped names throughout the application code.

I’ve been poking around looking for where in AR’s hierarchy I can can  
inject this mapping, but so far I’m coming up empty.

I’ve written/been using my own framework for years in another  
language that handled all this (more of a table gateway than an  
ActiveRecord pattern), so I can do it, just wondering if Rails has  
it, and if not, what’s the best, i.e. Ruby/Rails “right way” to add  
it (extend AR modules? write a super class between AR and all my  
models? Write a utility class for all my models to use, other?)

For those of you that want to know why, the reaons boil down to  
adapting to legacy data (same “News module” code used over & over to  
adapt to existing news data), and same code being used to aggregate  
multiple data sources. IN both cases the mapper abstracts the real  
data source so the attributes of the app code can remain a familiar  
constant.

(yes I posted this a couple days ago, but it was a weekend, thought I  
might have more luck on a weekday 🙂

TIA.

– gw

---

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [October 17, 2007, 5:11am UTC](https://www.ruby-forum.com/t/where-override-model-attribute-names/117435/2 "2007-10-17T05:11:02Z")

</div>

Hey Greg,

If I’m understanding perhaps the alias\_attribute method will give you  
some ideas?

{ :title =\> :name,  
:synopsis =\> :description,  
:short\_synopsis =\> :short\_description,  
:quantity\_sold =\> :quantity\_ordered  
}.each { |aliased, actual| alias\_attribute aliased, actual }

Good luck!  
Tim

---

<div class="post-metadata">

**Author:** ![S-gw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/ed655f/32.png) [@S-gw](https://www.ruby-forum.com/u/S-gw)\
**Post date:** [October 17, 2007, 5:25am UTC](https://www.ruby-forum.com/t/where-override-model-attribute-names/117435/3 "2007-10-17T05:25:38Z")

</div>

Hmm, doesn’t show up in the RDocs, but I found some blogs on it.  
Looks like that will be the place to start. Cool. thank you.

– gw
