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