Module: Squeel::Adapters::ActiveRecord::BaseExtensions

Defined in:
lib/squeel/adapters/active_record/base_extensions.rb

Instance Method Summary collapse

Instance Method Details

#build_default_scope_with_squeelObject

:nodoc:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/squeel/adapters/active_record/base_extensions.rb', line 19

def build_default_scope_with_squeel #:nodoc:
  if defined?(::ActiveRecord::Scoping) &&
    method(:default_scope).owner != ::ActiveRecord::Scoping::Default::ClassMethods
    evaluate_default_scope { default_scope }
  elsif default_scopes.any?
    evaluate_default_scope do
      default_scopes.inject(relation) do |default_scope, scope|
        if scope.is_a?(Hash)
          default_scope.apply_finder_options(scope)
        elsif !scope.is_a?(::ActiveRecord::Relation) && scope.respond_to?(:call)
          default_scope.merge(scope.call, true)
        else
          default_scope.merge(scope, true)
        end
      end
    end
  end
end

#sifter(name = nil) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/squeel/adapters/active_record/base_extensions.rb', line 10

def sifter(name = nil)
  if Symbol === name && block_given?
    singleton_class.send :define_method, name,
                          lambda {|*args| DSL.exec(*args, &Proc.new)}
  else
    raise ArgumentError, "A name and block are required"
  end
end

#squeel(&block) ⇒ Object



6
7
8
# File 'lib/squeel/adapters/active_record/base_extensions.rb', line 6

def squeel(&block)
  DSL.eval &block
end