Class: Grouping

Inherits:
Object
  • Object
show all
Defined in:
lib/grouping.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ Grouping

Returns a new instance of Grouping.

Yields:

  • (_self)

Yield Parameters:

  • _self (Grouping)

    the object that the method was called on



5
6
7
8
9
10
11
# File 'lib/grouping.rb', line 5

def initialize
  @id = RansackQuery.generate_id
  @combinator = :and
  @conditions = []
  @groupings = []
  yield self if block_given?
end

Instance Attribute Details

#combinatorObject

Returns the value of attribute combinator.



2
3
4
# File 'lib/grouping.rb', line 2

def combinator
  @combinator
end

#conditionsObject (readonly)

Returns the value of attribute conditions.



3
4
5
# File 'lib/grouping.rb', line 3

def conditions
  @conditions
end

#groupingsObject (readonly)

Returns the value of attribute groupings.



3
4
5
# File 'lib/grouping.rb', line 3

def groupings
  @groupings
end

#idObject

Returns the value of attribute id.



2
3
4
# File 'lib/grouping.rb', line 2

def id
  @id
end

Instance Method Details

#add_condition(condition = nil) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/grouping.rb', line 13

def add_condition(condition=nil)
  if block_given?
    condition = Condition.new do |new_condition|
      yield new_condition
    end
  end
  conditions << condition
  self
end

#add_conditions(conditions) ⇒ Object



33
34
35
36
# File 'lib/grouping.rb', line 33

def add_conditions(conditions)
  @conditions += conditions
  self
end

#add_grouping(grouping = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/grouping.rb', line 23

def add_grouping(grouping=nil)
  if block_given?
    grouping = Grouping.new do |new_grouping|
      yield new_grouping
    end
  end
  groupings << grouping
  self
end

#add_groupings(groupings) ⇒ Object



38
39
40
41
# File 'lib/grouping.rb', line 38

def add_groupings(groupings)
  @groupings += groupings
  self
end

#ransackifyObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/grouping.rb', line 43

def ransackify
  ransack_hash = {
      group_id => {
          @id => {
              'm' => @combinator.to_s
          }
      }
  }
  ransackify_conditions(ransack_hash)
  ransackify_groupings(ransack_hash)
  ransack_hash
end