# mapping column names in legacy schemata

**URL:** <https://discuss.rubyonrails.org/t/mapping-column-names-in-legacy-schemata/12217>\
**Category:** rubyonrails-talk\
**Created:** [April 26, 2007, 11:59pm UTC](https://discuss.rubyonrails.org/t/mapping-column-names-in-legacy-schemata/12217 "2007-04-26T23:59:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![fxn](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/fxn/32/12956_2.png) [@fxn](https://discuss.rubyonrails.org/u/fxn)\
**Post date:** [April 26, 2007, 11:59pm UTC](https://discuss.rubyonrails.org/t/mapping-column-names-in-legacy-schemata/12217/1 "2007-04-26T23:59:10Z")

</div>

You could add this somewhere, for instance in environment.rb:

&nbsp;&nbsp;&nbsp;class ActiveRecord::Base &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def self.map\_column(legacy, nice) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class\_eval \<\<-EOS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def #{nice} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{legacy} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def #{nice}=(val) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.#{legacy} = val &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EOS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;end

The usage is

&nbsp;&nbsp;&nbsp;class Model \< ActiveRecord::Base &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map\_column :\_job, :job\_id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map\_column :\_change, :change\_id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;end

You see the technique in case you prefer another kind of macro. BTW, that cannot be based on alias\_method because AR accessors are not defined by then.

-- fxn
