effective_resources 2.7.20 → 2.8.1

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: 016f2e6e705dc75e0ea58ff2e95f9ce5553122d82a1dd0280ccc327a284b4e93
4
+ data.tar.gz: eedc423555203163a7c9d3674729c3ab56dd1d69d448d289fef0a0c06bbad3d0
5
5
  SHA512:
6
- metadata.gz: 8334b1b3e37bfb79707a65529efed084d3f43d901b3c21cdb0cfc377a6eb152d759bb3a2168525d503a8cdfa2836e1205b23b29c39c6128df6efe4885c0cdee1
7
- data.tar.gz: 11126e1402eadcad2f2bce9e6082075762f4b51034635a4ece7e4fb368784b93c69d834e877a95f1a55ac1a9714de4b5df0eefc5a38949e77c8e576b2fb8456d
6
+ metadata.gz: 296abe054bdc8e96495d75a2172187b89c093311a5819f7df89c13af90298611673285cec429d96c1a45da88b15e65f0c54e3f0108193f8fdff12117edbf611d
7
+ data.tar.gz: 6278969a0aefe37f56bae5c036e944ab0d22c7c8142a09127cbfa9b1448be49fd9568b1bb7185db7896f985e85d0594b4864aaa4994d50ba1e0ab2d5590f4326
@@ -0,0 +1,36 @@
1
+ #
2
+ # ActsAsPaginable
3
+ #
4
+ # Adds the a `paginate` scope to a model for `limit` and `offset` pagination.
5
+ #
6
+ module ActsAsPaginable
7
+ extend ActiveSupport::Concern
8
+
9
+ module Base
10
+ def acts_as_paginable(options = nil)
11
+ include ::ActsAsPaginable
12
+ end
13
+ end
14
+
15
+ module ClassMethods
16
+ def acts_as_paginable?; true; end
17
+ end
18
+
19
+ included do
20
+ def self.default_per_page=(per_page)
21
+ @default_per_page = per_page
22
+ end
23
+
24
+ def self.default_per_page
25
+ @default_per_page || 12 # because we often do 3 columns of 4 elements layouts
26
+ end
27
+
28
+ scope :paginate, -> (page: nil, per_page: nil) {
29
+ per_page = (per_page || default_per_page).to_i
30
+ page = (page || 1).to_i
31
+ offset = [(page - 1), 0].max * (per_page).to_i
32
+
33
+ all.limit(per_page).offset(offset)
34
+ }
35
+ end
36
+ end
@@ -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)
@@ -29,8 +29,10 @@ module EffectiveResources
29
29
  ActiveRecord::Base.extend(ActsAsTokened::Base)
30
30
  ActiveRecord::Base.extend(ActsAsSlugged::Base)
31
31
  ActiveRecord::Base.extend(ActsAsStatused::Base)
32
+ ActiveRecord::Base.extend(ActsAsPaginable::Base)
32
33
  ActiveRecord::Base.extend(ActsAsWizard::Base)
33
34
  ActiveRecord::Base.extend(ActsAsPurchasableWizard::Base)
35
+
34
36
  ActiveRecord::Base.extend(HasManyPurgable::Base)
35
37
  ActiveRecord::Base.extend(HasManyRichTexts::Base)
36
38
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '2.7.20'.freeze
2
+ VERSION = '2.8.1'.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.1
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-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -159,6 +159,7 @@ files:
159
159
  - app/mailers/concerns/effective_mailer.rb
160
160
  - app/models/concerns/acts_as_archived.rb
161
161
  - app/models/concerns/acts_as_email_form.rb
162
+ - app/models/concerns/acts_as_paginable.rb
162
163
  - app/models/concerns/acts_as_purchasable_wizard.rb
163
164
  - app/models/concerns/acts_as_slugged.rb
164
165
  - app/models/concerns/acts_as_statused.rb
@@ -243,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
244
  - !ruby/object:Gem::Version
244
245
  version: '0'
245
246
  requirements: []
246
- rubygems_version: 3.1.2
247
+ rubygems_version: 3.4.10
247
248
  signing_key:
248
249
  specification_version: 4
249
250
  summary: Make any controller an effective resource controller.