method

alias_attribute_method_definition

rails latest stable - Class: ActiveModel::AttributeMethods::ClassMethods
alias_attribute_method_definition(code_generator, pattern, new_name, old_name)
public

No documentation available.

# File activemodel/lib/active_model/attribute_methods.rb, line 224
      def alias_attribute_method_definition(code_generator, pattern, new_name, old_name) # :nodoc:
        method_name = pattern.method_name(new_name).to_s
        target_name = pattern.method_name(old_name).to_s
        parameters = pattern.parameters
        mangled_name = target_name

        unless NAME_COMPILABLE_REGEXP.match?(target_name)
          mangled_name = "__temp__#{target_name.unpack1("h*")}"
        end

        code_generator.define_cached_method(method_name, as: mangled_name, namespace: :alias_attribute) do |batch|
          body = if CALL_COMPILABLE_REGEXP.match?(target_name)
            "self.#{target_name}(#{parameters || ''})"
          else
            call_args = [":'#{target_name}'"]
            call_args << parameters if parameters
            "send(#{call_args.join(", ")})"
          end

          modifier = parameters == FORWARD_PARAMETERS ? "ruby2_keywords " : ""

          batch <<
            "#{modifier}def #{mangled_name}(#{parameters || ''})" <<
            body <<
            "end"
        end
      end