Rails で action のエイリアス

actionのエイリアスを作りたくて、alias で昔はうまくいってた気もするけど今はうまくいかないなー、ということでさっくり実装

app/controller/application.rb

  #
  # Actionのエイリアスを作成
  #
  def self.alias_action(new, old)
    unless method_defined?(old)
      raise NameError, "undefined method `#{old}' for class `#{self}'"
    end
    define_method(new) {
      self.action_name = old
      send old
    }
  end