class RansackGrouping
Attributes
combinator[RW]
conditions[R]
groupings[R]
id[RW]
Public Class Methods
new() { |self| ... }
click to toggle source
# File lib/ransack_grouping.rb, line 5 def initialize @id = RansackQuery.generate_id @combinator = :and @conditions = [] @groupings = [] yield self if block_given? end
Public Instance Methods
add_condition(condition=nil) { |new_condition| ... }
click to toggle source
# File lib/ransack_grouping.rb, line 13 def add_condition(condition=nil) if block_given? condition = RansackCondition.new do |new_condition| yield new_condition end end conditions << condition.to_condition self end
add_conditions(conditions)
click to toggle source
# File lib/ransack_grouping.rb, line 33 def add_conditions(conditions) Array(conditions).each {|c| add_condition(c) } self end
add_grouping(grouping=nil) { |new_grouping| ... }
click to toggle source
# File lib/ransack_grouping.rb, line 23 def add_grouping(grouping=nil) if block_given? grouping = RansackGrouping.new do |new_grouping| yield new_grouping end end groupings << grouping.to_grouping self end
add_groupings(groupings)
click to toggle source
# File lib/ransack_grouping.rb, line 38 def add_groupings(groupings) Array(groupings).each {|g| add_grouping(g) } self end
ransackify()
click to toggle source
# File lib/ransack_grouping.rb, line 43 def ransackify ransack_hash = { @id => { 'm' => @combinator.to_s } } ransackify_conditions(ransack_hash) ransackify_groupings(ransack_hash) ransack_hash end
to_grouping()
click to toggle source
# File lib/ransack_grouping.rb, line 54 def to_grouping self end
Private Instance Methods
ransackify_conditions(ransack_hash)
click to toggle source
# File lib/ransack_grouping.rb, line 60 def ransackify_conditions(ransack_hash) return if conditions.empty? ransack_hash[@id].merge!({'c' => conditions.reduce({}) { |result, condition| result.merge! condition.ransackify }}) end
ransackify_groupings(ransack_hash)
click to toggle source
# File lib/ransack_grouping.rb, line 65 def ransackify_groupings(ransack_hash) return if groupings.empty? ransack_hash[@id].merge!({'g' => {}}) groupings.each { |grouping| ransack_hash[@id]['g'].merge!(grouping.ransackify) } end