Where override model attribute names?

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 :slight_smile:


-- gw

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!

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