class Shoulda::Matchers::ActiveRecord::AssociationMatchers::ModelReflector

@private

Attributes

name[R]
subject[R]

Public Class Methods

new(subject, name) click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 25
def initialize(subject, name)
  @subject = subject
  @name = name
end

Public Instance Methods

association_relation() click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 30
def association_relation
  reflection.association_relation(subject)
end
build_relation_with_clause(name, value) click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 50
def build_relation_with_clause(name, value)
  case name
  when :conditions
    associated_class.where(value)
  when :order
    associated_class.order(value)
  else
    raise ArgumentError, "Unknown clause '#{name}'"
  end
end
extract_relation_clause_from(relation, name) click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 61
def extract_relation_clause_from(relation, name)
  case name
  when :conditions
    relation.where_values_hash
  when :order
    relation.order_values.map do |value|
      value_as_sql(value)
    end.join(', ')
  else
    raise ArgumentError, "Unknown clause '#{name}'"
  end
end
model_class() click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 46
def model_class
  subject.class
end
reflect_on_association(name) click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 38
def reflect_on_association(name)
  reflection = model_class.reflect_on_association(name)

  if reflection
    ModelReflection.new(reflection)
  end
end
reflection() click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 34
def reflection
  @_reflection ||= reflect_on_association(name)
end

Protected Instance Methods

value_as_sql(value) click to toggle source
# File lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb, line 78
def value_as_sql(value)
  if value.respond_to?(:to_sql)
    value.to_sql
  else
    value
  end
end