123456789_123456789_123456789_123456789_123456789_

Class: ActiveModel::AttributeMethods::ClassMethods::AttributeMethodPattern

Do not use. This class is for internal use only.
Relationships & Source Files
Namespace Children
Classes:
Inherits: Object
Defined in: activemodel/lib/active_model/attribute_methods.rb

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(prefix: "", suffix: "", parameters: nil) ⇒ AttributeMethodPattern

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 467

def initialize(prefix: "", suffix: "", parameters: nil)
  @prefix = -prefix
  @suffix = -suffix
  @parameters = parameters.nil? ? "..." : (parameters.is_a?(String) ? -parameters : parameters)
  @prefix_length = @prefix.length
  @affix_length = @prefix.length + @suffix.length
  @unaffixed = @prefix.empty? && @suffix.empty?
  @proxy_target = "#{@prefix}attribute#{@suffix}".freeze
  @define_method_proxy_target = :"define_method_#{@proxy_target}"
  @method_name = "#{prefix}%s#{suffix}".freeze
  freeze
end

Instance Attribute Details

#define_method_proxy_target (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 463

attr_reader :prefix, :suffix, :define_method_proxy_target, :proxy_target, :parameters

#parameters (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 463

attr_reader :prefix, :suffix, :define_method_proxy_target, :proxy_target, :parameters

#prefix (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 463

attr_reader :prefix, :suffix, :define_method_proxy_target, :proxy_target, :parameters

#proxy_target (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 463

attr_reader :prefix, :suffix, :define_method_proxy_target, :proxy_target, :parameters

#suffix (readonly)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 463

attr_reader :prefix, :suffix, :define_method_proxy_target, :proxy_target, :parameters

Instance Method Details

#matched_attribute_name(method_name)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 480

def matched_attribute_name(method_name)
  return method_name if @unaffixed
  return if method_name.length < @affix_length
  return unless method_name.end_with?(@suffix) && method_name.start_with?(@prefix)
  method_name[@prefix_length, method_name.length - @affix_length]
end

#method_for_attr(attr_name)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 487

def method_for_attr(attr_name)
  AttributeMethod.new(@proxy_target, attr_name)
end

#method_name(attr_name)

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_methods.rb', line 491

def method_name(attr_name)
  @method_name % attr_name
end