class BabySqueel::Relation

Attributes

_scope[RW]

Public Class Methods

new(scope) click to toggle source
Calls superclass method
# File lib/baby_squeel/relation.rb, line 7
def initialize(scope)
  super(scope.arel_table)
  @_scope = scope
end

Public Instance Methods

association(name) click to toggle source

Constructs a new BabySqueel::Association. Raises an exception if the association is not found.

# File lib/baby_squeel/relation.rb, line 14
def association(name)
  if reflection = _scope.reflect_on_association(name)
    Association.new(self, reflection)
  else
    raise AssociationNotFoundError.new(_scope.model_name, name)
  end
end
sift(sifter_name, *args) click to toggle source

Invokes a sifter defined on the model

Examples

Post.where.has { sift(:name_contains, 'joe') }
# File lib/baby_squeel/relation.rb, line 27
def sift(sifter_name, *args)
  Nodes.wrap _scope.public_send("sift_#{sifter_name}", *args)
end

Private Instance Methods

resolver() click to toggle source
# File lib/baby_squeel/relation.rb, line 33
def resolver
  @resolver ||= Resolver.new(self, [:column, :association])
end