base_editing_bootstrap 2.0.1 → 2.0.2

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: 621ce2921cb1a39524a523807983ec5e099d0646d9eb06d40a15d4f8d59d9720
4
- data.tar.gz: d7695f7d33150def36bdc1bf5ec357f4c6cb0367b5143ec152fb338d779fba5d
3
+ metadata.gz: 6f004a238acce2ed0c9ffa8d95e4d6bb264c700ec80a215d1b6f549580300cc1
4
+ data.tar.gz: 5425f4a870b9d52b5f06364fdb97c4f2992561a4a3165b1959d0cdd60165259b
5
5
  SHA512:
6
- metadata.gz: 3329ab7c65c74ff2e8b5e91a0f6e3d27f2599e8ad0800f02e53cdb9f70706145a879c147c5c6224d21ac602b2789c7cae531115e899a564060f2a953470b17c5
7
- data.tar.gz: 56b1f76f086abb48c95e9a760af3d2cfc0f5e75bfe427119a74ebb990ef9e6d8fe1c69e559c9852eafa2db813546a0e461eb87449b8183ed4dc8639c18a324b6
6
+ metadata.gz: f105eb6fa77aa2ef3298449106ab2d2c13777f4889db008381755ceb3a8bb99cd5a7d70647988571288db3b23d00db38a35ffdcea21581b393e81fa6bbd0f3b1
7
+ data.tar.gz: 422b293959d2e6f60e8ae57d3dce6e5961c784fe505101c61e770b9c455d9be2f2f6e1209e436e464de75c557b4d19864cf5284fc978430828cdd104a45aee70
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
  All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
3
3
 
4
4
  - - -
5
+ ## 2.0.2 - 2026-10-15
6
+ #### Bug Fixes
7
+ - Aggiorna la dipendenza di ransack per supportare versioni maggiori (#31) - (014d9bd) - Marino Bonetti
8
+ - Order by when distinct==true in ransack (#30) - (d86854a) - Marino Bonetti
9
+
10
+ - - -
11
+
5
12
  ## 2.0.1 - 2026-09-17
6
13
  #### Bug Fixes
7
14
  - Correzione limitazione numero sub_elements in nested - (7cc9889) - Marino Bonetti
data/README.md CHANGED
@@ -431,6 +431,12 @@ docker compose up
431
431
  ./bin/local_ci_matrix.sh
432
432
  ```
433
433
 
434
+ ### Testare diverse versioni Rails e Ruby
435
+
436
+ ```bash
437
+ ./bin/local_ci_matrix.sh --rails 8.1 --ruby 4.0 --keep-docker-cache
438
+ ```
439
+
434
440
  ## License
435
441
 
436
442
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  # Policy
34
34
  spec.add_dependency "pundit", ["~> 2.3", ">= 2.3.1"]
35
35
  # Search
36
- spec.add_dependency 'ransack', ['~> 4.0', '>= 4.0.0']
36
+ spec.add_dependency 'ransack', ['>= 4.0.0']
37
37
  # Pagination
38
38
  spec.add_dependency 'kaminari', ['~> 1.2', '>= 1.2.2']
39
39
  spec.add_dependency 'kaminari-i18n', '~> 0.5'
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.0.2
@@ -27,13 +27,41 @@ module BaseEditingBootstrap::Searches
27
27
  # Risultato della ricerca, fa da pipeline verso ransack
28
28
  # Impostando il sort nel caso in cui non sia già stato impostato da ransack
29
29
  def results
30
- ransack_query
31
- .tap { |r| r.sorts = @sorts if r.sorts.empty? }
32
- .result(distinct: @distinct)
30
+ query = ransack_query
31
+ query.sorts = @sorts if query.sorts.empty?
32
+
33
+ relation = query.result(distinct: @distinct)
34
+ relation = distinct_order_columns(relation, query.sorts) if @distinct && query.sorts.any?
35
+
36
+ relation
33
37
  .tap { |q| Rails.logger.debug { "[Ransack] params:#{params} - sql: #{q.to_sql}" } }
34
38
  .page(params[:page])
35
39
  end
36
40
 
41
+ # PostgreSQL richiede che le colonne usate nell'ORDER BY siano nel SELECT quando DISTINCT è attivo.
42
+ # Aggiungiamo solo le colonne provenienti dalle join, perché la tabella base è già coperta da `table.*`.
43
+ def distinct_order_columns(relation, sorts)
44
+ order_columns = sorts.filter_map do |sort|
45
+ next unless sort.valid?
46
+
47
+ attribute = sort.attr
48
+ next unless attribute.respond_to?(:relation) && attribute.respond_to?(:name)
49
+
50
+ table_name = attribute.relation.name
51
+ next if table_name.nil? || table_name == model_klass.table_name
52
+
53
+ "#{relation.connection.quote_table_name(table_name)}.#{relation.connection.quote_column_name(attribute.name)}"
54
+ end.uniq
55
+
56
+ return relation if order_columns.empty?
57
+
58
+ relation
59
+ .unscope(:select)
60
+ .select("#{relation.connection.quote_table_name(relation.klass.table_name)}.*", *order_columns)
61
+ end
62
+
63
+ private :distinct_order_columns
64
+
37
65
  def ransack_query
38
66
  scope
39
67
  .ransack(params[:q], auth_object: user)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: base_editing_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marino Bonetti
@@ -53,9 +53,6 @@ dependencies:
53
53
  name: ransack
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
- - - "~>"
57
- - !ruby/object:Gem::Version
58
- version: '4.0'
59
56
  - - ">="
60
57
  - !ruby/object:Gem::Version
61
58
  version: 4.0.0
@@ -63,9 +60,6 @@ dependencies:
63
60
  prerelease: false
64
61
  version_requirements: !ruby/object:Gem::Requirement
65
62
  requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '4.0'
69
63
  - - ">="
70
64
  - !ruby/object:Gem::Version
71
65
  version: 4.0.0
@@ -457,7 +451,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
457
451
  - !ruby/object:Gem::Version
458
452
  version: '0'
459
453
  requirements: []
460
- rubygems_version: 3.6.9
454
+ rubygems_version: 4.0.20
461
455
  specification_version: 4
462
456
  summary: 'BaseEditing: funzionalità di base per cms rails'
463
457
  test_files: []