Legacy schema mapping in ActiveRecord

View as text

# 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

SnippetStash costs money to host and develop. The service is free for everyone to use
but if you found it useful please consider making a small donation.