Class: Liquor::Drop::Scope

Inherits:
Object
  • Object
show all
Includes:
External
Defined in:
lib/liquor/drop/drop_scope.rb

Direct Known Subclasses

Pagination::Scope

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from External

included, #liquor_send

Constructor Details

#initialize(source) ⇒ Scope

Returns a new instance of Scope


7
8
9
10
11
12
13
# File 'lib/liquor/drop/drop_scope.rb', line 7

def initialize(source)
  unless source.respond_to? :each
    source = source.where(nil)
  end

  @source = source
end

Instance Attribute Details

#sourceObject (readonly)

Returns the value of attribute source


5
6
7
# File 'lib/liquor/drop/drop_scope.rb', line 5

def source
  @source
end

Instance Method Details

#[](index) ⇒ Object


71
72
73
# File 'lib/liquor/drop/drop_scope.rb', line 71

def [](index)
  DropDelegation.wrap_element @source[index]
end

#countObject Also known as: size


97
98
99
# File 'lib/liquor/drop/drop_scope.rb', line 97

def count
  @source.count
end

#eachObject

Not exported. No block support in Liquor.


76
77
78
79
80
# File 'lib/liquor/drop/drop_scope.rb', line 76

def each
  @source.each do |elem|
    yield DropDelegation.wrap_element(elem)
  end
end

#entityObject


23
24
25
# File 'lib/liquor/drop/drop_scope.rb', line 23

def entity
  @source.model_name.to_s
end

#except(record) ⇒ Object


44
45
46
47
48
49
# File 'lib/liquor/drop/drop_scope.rb', line 44

def except(record)
  record, = Drop.unwrap_scope_arguments([ record ])

  result = @source.where(@source.arel_table[:id].in(record).not)
  DropDelegation.wrap_scope(result)
end

#find_all_by(_, fields = {}) ⇒ Object


35
36
37
38
39
40
# File 'lib/liquor/drop/drop_scope.rb', line 35

def find_all_by(_, fields={})
  fields, = Drop.unwrap_scope_arguments([ fields ])

  result = @source.where(fields)
  DropDelegation.wrap_scope(result)
end

#find_by(_, fields = {}) ⇒ Object


28
29
30
31
32
33
# File 'lib/liquor/drop/drop_scope.rb', line 28

def find_by(_, fields={})
  fields, = Drop.unwrap_scope_arguments([ fields ])

  result = @source.where(fields).first
  DropDelegation.wrap_element result if result
end

#find_except_by(_, fields = {}) ⇒ Object


51
52
53
54
55
56
57
58
59
# File 'lib/liquor/drop/drop_scope.rb', line 51

def find_except_by(_, fields={})
  fields, = Drop.unwrap_scope_arguments([ fields ])

  result = @source.
    where(fields.map do |key, value|
      @source.arel_table[key].eq(value)
    end.reduce(&:and).not)
  DropDelegation.wrap_scope(result)
end

#firstObject


63
64
65
# File 'lib/liquor/drop/drop_scope.rb', line 63

def first
  DropDelegation.wrap_element @source.first
end

#include?(elem) ⇒ Boolean

Not exported. No ? in names in Liquor.

Returns:

  • (Boolean)

83
84
85
86
87
88
89
# File 'lib/liquor/drop/drop_scope.rb', line 83

def include?(elem)
  if elem.is_a? Liquor::Drop
    @source.include? elem.source
  else
    false
  end
end

#lastObject


67
68
69
# File 'lib/liquor/drop/drop_scope.rb', line 67

def last
  DropDelegation.wrap_element @source.last
end

#limit(count) ⇒ Object


104
105
106
# File 'lib/liquor/drop/drop_scope.rb', line 104

def limit(count)
  DropDelegation.wrap_scope @source.limit(count)
end

#offset(count) ⇒ Object


108
109
110
# File 'lib/liquor/drop/drop_scope.rb', line 108

def offset(count)
  DropDelegation.wrap_scope @source.offset(count)
end

#pluck(attribute) ⇒ Object


91
92
93
94
95
# File 'lib/liquor/drop/drop_scope.rb', line 91

def pluck(attribute)
  @source.map do |elem|
    DropDelegation.wrap_element(elem).liquor_send(attribute.to_s, [])
  end
end

#reverseObject


112
113
114
# File 'lib/liquor/drop/drop_scope.rb', line 112

def reverse
  DropDelegation.wrap_scope @source.reverse_order
end

#to_aObject Also known as: to_ary

Not exported.


16
17
18
19
20
# File 'lib/liquor/drop/drop_scope.rb', line 16

def to_a
  @source.map do |elem|
    DropDelegation.wrap_element(elem)
  end
end