where_chain 0.3.1 → 0.4.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: f908efafd89e45ee67d4051326d7998aee4dea9d008e6e95a2dc23064754f12f
4
- data.tar.gz: 368905be74dfd90a3eb62cf190b06a800e1764c235870364cf2c79eb243fde92
3
+ metadata.gz: bc7e391acb640aba967c22926907bc95c610bba037ff38f1890274d751797d50
4
+ data.tar.gz: ff165ee3f9bda32f0625fc8214f7cfba1f335b273260b008d2e33a26be5505ac
5
5
  SHA512:
6
- metadata.gz: 2c71031c54d4e19143165b9ea03f12b548dd1bf3850649a8937a3c376f36168559d359f93a1a250fc61a7ba0a8e22b85a69e8af34d69eaf3d29f01fb4aa991e2
7
- data.tar.gz: 65f15b0f747953b251b4f48c87f84d4eda3064e739d575ea4fa02de81093d05f1efa4b884340a466e020965c8fe8031fe0269a429dce46b7cff163318852729f
6
+ metadata.gz: 77ab8fd3e5f1f8f9aebaa880a420c72200a789cef67c5e5c1da603fa34b8d37b6f76e6a5e8be21381e6de4cc8a036c6a482baf9fe412e09339238de3610e7601
7
+ data.tar.gz: 7fd1435df353db94e480285f02451f75168486f7d24a3bd04c357cbe4a7de75cd79d226d1b9c8136344e9c246d43fc8e67620cddb4a4866d4aa2f7906e45b399
@@ -8,6 +8,7 @@ module ActiveRecord
8
8
 
9
9
  module QueryMethods
10
10
  class WhereChain
11
+ include ActiveModel::ForbiddenAttributesProtection
11
12
  include WhereChainSharedMethods
12
13
 
13
14
  # Returns a new relation expressing WHERE + NOT condition
@@ -30,9 +31,9 @@ module ActiveRecord
30
31
 
31
32
  opts = sanitize_forbidden_attributes(opts)
32
33
 
33
- where_clause = @scope.send(:where_clause_factory).build(opts, rest)
34
+ where_clause = where_clause_factory_build(opts, rest)
34
35
 
35
- @scope.references!(PredicateBuilder.references(opts)) if opts.is_a?(Hash)
36
+ @scope.references!(PredicateBuilder.references(opts.stringify_keys)) if opts.is_a?(Hash)
36
37
  @scope.where_clause += where_clause.invert
37
38
  @scope
38
39
  end
@@ -46,7 +47,7 @@ module ActiveRecord
46
47
  def prepare_where(node_type, infix, opts, rest)
47
48
  @scope.tap do |s|
48
49
  opts.each_pair do |key, value|
49
- equal_where_clause = s.send(:where_clause_factory).build({ key => value }, rest)
50
+ equal_where_clause = where_clause_factory_build({ key => value }, rest)
50
51
  equal_where_clause_predicate = equal_where_clause.send(:predicates).first
51
52
 
52
53
  new_predicate = arel_node(node_type, infix, equal_where_clause_predicate)
@@ -69,6 +70,16 @@ module ActiveRecord
69
70
  Relation::WhereClause.new([new_predicate])
70
71
  end
71
72
  end
73
+
74
+ # Active Record 6.1 removed the where_clause_factory.build method
75
+ # method was replaced by build_where_clause
76
+ def where_clause_factory_build(opts, rest = [])
77
+ if ActiveRecord.version.release >= Gem::Version.new('6.1.0')
78
+ @scope.send(:build_where_clause, opts, rest)
79
+ else
80
+ @scope.send(:where_clause_factory).build(opts, rest)
81
+ end
82
+ end
72
83
  end
73
84
  end
74
85
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WhereChain
4
- VERSION = '0.3.1'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: where_chain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Ruszkiewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-25 00:00:00.000000000 Z
11
+ date: 2021-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord