class Ransack::Visitor
Constants
- DISPATCH
Public Instance Methods
accept(object)
click to toggle source
# File lib/ransack/visitor.rb, line 4 def accept(object) visit(object) end
can_accept?(object)
click to toggle source
# File lib/ransack/visitor.rb, line 8 def can_accept?(object) respond_to? DISPATCH[object.class] end
quoted?(object)
click to toggle source
# File lib/ransack/adapters/active_record/ransack/visitor.rb, line 14 def quoted?(object) case object when Arel::Nodes::SqlLiteral, Bignum, Fixnum false else true end end
visit(object)
click to toggle source
# File lib/ransack/visitor.rb, line 51 def visit(object) send(DISPATCH[object.class], object) end
visit_Array(object)
click to toggle source
# File lib/ransack/visitor.rb, line 12 def visit_Array(object) object.map { |o| accept(o) }.compact end
visit_Ransack_Nodes_And(object)
click to toggle source
# File lib/ransack/adapters/active_record/3.0/compat.rb, line 4 def visit_Ransack_Nodes_And(object) nodes = object.values.map { |o| accept(o) }.compact return nil unless nodes.size > 0 if nodes.size > 1 nodes.inject(&:and) else nodes.first end end
visit_Ransack_Nodes_Condition(object)
click to toggle source
# File lib/ransack/visitor.rb, line 16 def visit_Ransack_Nodes_Condition(object) object.arel_predicate if object.valid? end
visit_Ransack_Nodes_Grouping(object)
click to toggle source
# File lib/ransack/visitor.rb, line 20 def visit_Ransack_Nodes_Grouping(object) if object.combinator == Constants::OR visit_or(object) else visit_and(object) end end
visit_Ransack_Nodes_Sort(object)
click to toggle source
# File lib/ransack/visitor.rb, line 43 def visit_Ransack_Nodes_Sort(object) object.attr.send(object.dir) if object.valid? end
visit_and(object)
click to toggle source
# File lib/ransack/adapters/active_record/ransack/visitor.rb, line 3 def visit_and(object) nodes = object.values.map { |o| accept(o) }.compact return nil unless nodes.size > 0 if nodes.size > 1 Arel::Nodes::Grouping.new(Arel::Nodes::And.new(nodes)) else nodes.first end end
visit_or(object)
click to toggle source
# File lib/ransack/visitor.rb, line 32 def visit_or(object) nodes = object.values.map { |o| accept(o) }.compact return nil unless nodes.size > 0 if nodes.size > 1 nodes.inject(&:or) else nodes.first end end