effective_resources 2.7.20 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a66ec32a1b5da770279f4f21a9ae8cf42f2bd5f96250510cd9894c36e7965b
4
- data.tar.gz: b6ffacf0caef1d406988c4d51bf2a622bce4ff5cec1171e77a622c056b757bac
3
+ metadata.gz: 750ef0ae89d5b6437e046369b0dc46811abfa26ace4559e9448b190c1e255430
4
+ data.tar.gz: 7ad14d23604419ba975ab11addf2912f7fbcefe40fdaa9764c7782a2c992cc3d
5
5
  SHA512:
6
- metadata.gz: 8334b1b3e37bfb79707a65529efed084d3f43d901b3c21cdb0cfc377a6eb152d759bb3a2168525d503a8cdfa2836e1205b23b29c39c6128df6efe4885c0cdee1
7
- data.tar.gz: 11126e1402eadcad2f2bce9e6082075762f4b51034635a4ece7e4fb368784b93c69d834e877a95f1a55ac1a9714de4b5df0eefc5a38949e77c8e576b2fb8456d
6
+ metadata.gz: 6b79973ce6e33a95e792921ecf6cc548fa144b9fb2aa5b550e531f1d7aa613d00e39aa301b71ab802c0e1506c7f31dba6344925e188f2efd3f78a0e071e24efa
7
+ data.tar.gz: 4bd4b421e3e74108cd95a84cb3283f0740aab2f890532901f5cf0e52b4d4680383c75351612e6d9b59b5cd6f546e844e5d8120ea13c34cc1960cabd503670d6b
@@ -413,29 +413,25 @@ module Effective
413
413
  join = ' AND '
414
414
  else
415
415
  terms = value.split(' ')
416
- join = ' OR '
416
+ join = ' AND '
417
417
  end
418
418
 
419
419
  terms = (terms - [nil, '', ' ']).map(&:strip)
420
420
  columns = Array(columns)
421
421
  fuzzy = true if fuzzy.nil?
422
422
 
423
- # Do the search
424
- searched = collection
425
-
426
- terms.each do |term|
427
- conditions = (
428
- if fuzzy
429
- columns.map { |name| "#{sql_column(name)} #{ilike} :fuzzy" }
430
- else
431
- columns.map { |name| "#{sql_column(name)} = :term" }
432
- end
433
- ).join(join)
434
-
435
- searched = collection.where(conditions, fuzzy: "%#{term}%", term: term)
423
+ terms = terms.inject({}) do |hash, term|
424
+ hash["term_#{hash.length}".to_sym] = (fuzzy ? "%#{term}%" : term); hash
436
425
  end
437
426
 
438
- searched
427
+ # Do any of these columns contain all the terms?
428
+ conditions = columns.map do |name|
429
+ keys = terms.keys.map { |key| (fuzzy ? "#{sql_column(name)} #{ilike} :#{key}" : "#{sql_column(name)} = :#{key}") }
430
+ '(' + keys.join(' AND ') + ')'
431
+ end.join(' OR ')
432
+
433
+ # Do the search
434
+ collection.where(conditions, terms)
439
435
  end
440
436
 
441
437
  def order_by_associated_conditions(association, sort: nil, direction: :asc, limit: nil)
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '2.7.20'.freeze
2
+ VERSION = '2.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.20
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-07 00:00:00.000000000 Z
11
+ date: 2023-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails