123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::PredicateBuilder::ComparisonAttribute

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: Arel::Attributes::Attribute
Defined in: activerecord/lib/active_record/relation/predicate_builder/comparison.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(attribute, type_caster) ⇒ ComparisonAttribute

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 11

def initialize(attribute, type_caster)
  super(attribute.relation, attribute.name)
  @attribute = attribute
  @type_caster = type_caster
  @expression = comparison_expression(attribute)
end

Instance Attribute Details

#attribute (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 9

attr_reader :attribute, :expression, :type_caster

#expression (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 9

attr_reader :attribute, :expression, :type_caster

#type_cast_for_database (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 22

delegate :able_to_type_cast?, :type_cast_for_database, to: :attribute

#type_caster (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 9

attr_reader :attribute, :expression, :type_caster

Instance Method Details

#==(other) Also known as: #eql?

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 32

def ==(other)
  self.class == other.class &&
    attribute == other.attribute &&
    expression == other.expression
end

#able_to_type_cast?Boolean

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 22

delegate :able_to_type_cast?, :type_cast_for_database, to: :attribute

#comparison_expression(expression)

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 18

def comparison_expression(expression)
  type_caster.comparison_expression(expression)
end

#eql?(other)

Alias for #==.

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 37

alias eql? ==

#fetch_attribute

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 24

def fetch_attribute(&)
  attribute.fetch_attribute(&)
end

#hash

[ GitHub ]

  
# File 'activerecord/lib/active_record/relation/predicate_builder/comparison.rb', line 28

def hash
  [self.class, attribute, expression].hash
end