lib/supernova/criteria.rb in supernova-0.6.8 vs lib/supernova/criteria.rb in supernova-0.7.0
- old
+ new
@@ -69,11 +69,11 @@
def search(*terms)
merge_filters_array :search, terms
end
def with(filters)
- merge_filters :with, filters
+ merge_search_options :with, filters
end
def where(*args)
with(*args)
end
@@ -168,10 +168,17 @@
end
def merge_filters_or_search_options(reference_method, key, value)
self_or_clone.tap do |soc|
reference = soc.send(reference_method)
- if value.is_a?(Hash)
+ if key == :with
+ reference[:with] ||= Array.new
+ if value.is_a?(Array)
+ reference[:with] += value
+ else
+ reference[:with] << value
+ end
+ elsif value.is_a?(Hash)
reference[key] ||= Hash.new
reference[key].merge!(value)
elsif [:select, :order].include?(key)
reference[key] ||= Array.new
reference[key] += (value || [])
\ No newline at end of file