class QuerySyntax::CriteriaScope
Criteria Scopes are scopes containing key:value conditions ex.: where!(a:0, b:1).where!(a:2) becomes (a=0 OR a=2) AND b=1
Attributes
conditions[RW]
Public Class Methods
new(operator, conditions={})
click to toggle source
Calls superclass method
QuerySyntax::Scope::new
# File lib/query_syntax/scope/criteria.rb, line 14 def initialize(operator, conditions={}) super operator @conditions = conditions where!(conditions) end
Public Instance Methods
to_s()
click to toggle source
Collapse all conditions to a string
# File lib/query_syntax/scope/criteria.rb, line 37 def to_s value = @conditions.map do |key,values| query = values.map { |value| "#{key}:#{value}" }.join(" OR ") values.count > 1 ? "(#{query})" : query end.join(" AND ") conditions.count > 1 ? "(#{value})" : value end
where!(args={})
click to toggle source
# File lib/query_syntax/scope/criteria.rb, line 25 def where!(args={}) args.each do |k,v| next if v.nil? @conditions[k] = [] unless conditions.key?(k) @conditions[k].concat(Array(v)).uniq! end self end