Legacy schema mapping in ActiveRecord
# Usage:
#
# class GreenPastures < ActiveRecord::Base
#
# alias_column "new_name" => "old_nAmE"
#
# end
#
# Include this code in a file in /lib
module Legacy
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def alias_column(options)
options.each do |new_name, old_name|
self.send(:define_method, new_name) { self.send(old_name) }
self.send(:define_method, "#{new_name}=") { |value| self.send("#{old_name}=", value) }
end
end
end
end
ActiveRecord::Base.class_eval do
include Legacy
end
Original snippet written by Brian Hogan
Last updated at 05:42 AM on Jul 07, 2008
by Brian Hogan