awesome_nested_set 3.2.1 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70956fe8d08167ab96e67894222f423188919dcb05a5a607f33d3372b5c909db
4
- data.tar.gz: cd34dc69edd00532c4cf8315263fb5f4b81c65ce02057600b514cf650bc5ff91
3
+ metadata.gz: 987975770adaff76d0b73ccbb82d5bdc008023485d822ac07e84586a550a2ede
4
+ data.tar.gz: 35dace0d877e6abcd9cacc806447311eea226d916cf753fb17c23d957a73a398
5
5
  SHA512:
6
- metadata.gz: 60354ed14c223e08bdec1da6ed56c533d3247ffedc846bf11f5c54b6065e0f3ea886db0a19405eac0dfc30721dd417b8ae441e0a1432dea6eb5caa7dd45dab7f
7
- data.tar.gz: 2ec0377f5fa405db532d6b7bb630d6225157d958e3cf868dabfcdec11536886ab83f809aa6443cfefa59c55f689cbe8ca123b78e845bd8cf233531a333f3bf31
6
+ metadata.gz: bf339d676ccbb8258b642f7017b950d2d1947e9819648b8e5b6254ad6e460c2e129648de11c969833eabaacdc1a481743c2a0441b7b8a8cfe17242bd2546a3fc
7
+ data.tar.gz: 492ecf9fac7fe59bc51a60a630a595a5f8c533c3799d7d4cc137e75f8c60b088f717a8b146395779f3835f0bcc0174890c1463fbd23385faea04ad6c57f3a0cd
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGELOG CHANGED
@@ -1,5 +1,12 @@
1
1
  Unreleased version
2
- * [Compare to 3.2.1](https://github.com/collectiveidea/awesome_nested_set/compare/v3.2.1...master)
2
+
3
+ * [Compare to 3.3.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.3.0...master)
4
+
5
+ 3.3.0
6
+ * Update for compatibility with Rails 6.1 which no longer inherits scoping
7
+ (Messages of the form "DEPRECATION WARNING: Class level methods will no longer inherit scoping from ...") [Marc Rohloff](https://github.com/marcrohloff)
8
+ * Fix ruby 2.7 keyword parameters deprecation warning [Krisdigital](https://github.com/krisdigital)
9
+ * [Compare to 3.2.1](https://github.com/collectiveidea/awesome_nested_set/compare/v3.2.1...v3.3.0)
3
10
 
4
11
  3.2.1
5
12
  * Don't reload in after_save callback. [Petrik de Heus](https://github.com/p8)
data/README.md CHANGED
@@ -6,7 +6,8 @@
6
6
  Awesome Nested Set is an implementation of the nested set pattern for ActiveRecord models.
7
7
  It is a replacement for acts_as_nested_set and BetterNestedSet, but more awesome.
8
8
 
9
- Version 3.1 supports Rails 5 & 4. Version 2 supports Rails 3. Gem versions prior to 2.0 support Rails 2.
9
+ Version 3.2 supports Rails 6, 3.1 supports Rails 5 & 4. Version 2 supports Rails 3.
10
+ Gem versions prior to 2.0 support Rails 2.
10
11
 
11
12
  ## What makes this so awesome?
12
13
 
@@ -88,7 +88,7 @@ module CollectiveIdea #:nodoc:
88
88
  end
89
89
 
90
90
  has_many :children, -> { order(order_column_name => :asc) },
91
- has_many_children_options
91
+ **has_many_children_options
92
92
  end
93
93
 
94
94
  def acts_as_nested_set_relate_parent!
@@ -102,7 +102,7 @@ module CollectiveIdea #:nodoc:
102
102
  :touch => acts_as_nested_set_options[:touch]
103
103
  }
104
104
  options[:optional] = true if ActiveRecord::VERSION::MAJOR >= 5
105
- belongs_to :parent, options
105
+ belongs_to :parent, **options
106
106
  end
107
107
 
108
108
  def acts_as_nested_set_default_options
@@ -79,9 +79,13 @@ module CollectiveIdea #:nodoc:
79
79
  end
80
80
 
81
81
  def nested_set_scope(options = {})
82
- options = {:order => { order_column_name => :asc }}.merge(options)
82
+ order = scope_order_from_options(options)
83
+ default_scoped.where(options[:conditions]).order(order)
84
+ end
83
85
 
84
- where(options[:conditions]).order(options.delete(:order))
86
+ def nested_set_scope_without_default_scope(options = {})
87
+ order = scope_order_from_options(options)
88
+ unscoped.where(options[:conditions]).order(order)
85
89
  end
86
90
 
87
91
  def primary_key_scope(id)
@@ -95,6 +99,12 @@ module CollectiveIdea #:nodoc:
95
99
  def roots
96
100
  nested_set_scope.children_of nil
97
101
  end
102
+
103
+ private
104
+
105
+ def scope_order_from_options(options)
106
+ options.fetch(:order, { order_column_name => :asc })
107
+ end
98
108
  end # end class methods
99
109
 
100
110
  # Any instance method that returns a collection makes use of Rails 2.1's named_scope (which is bundled for Rails 2.0), so it can be treated as a finder.
@@ -139,11 +149,7 @@ module CollectiveIdea #:nodoc:
139
149
  # performs finds on the base ActiveRecord class, using the :scope
140
150
  # declared in the acts_as_nested_set declaration.
141
151
  def nested_set_scope(options = {})
142
- if (scopes = Array(acts_as_nested_set_options[:scope])).any?
143
- options[:conditions] = scopes.inject({}) do |conditions,attr|
144
- conditions.merge attr => self[attr]
145
- end
146
- end
152
+ add_scope_conditions_to_options(options)
147
153
 
148
154
  self.class.base_class.nested_set_scope options
149
155
  end
@@ -153,10 +159,10 @@ module CollectiveIdea #:nodoc:
153
159
  # Only activerecord callbacks need unscoped model to handle the nested set records
154
160
  # And class level `nested_set_scope` seems just for query `root` `child` .. etc
155
161
  # I think we don't have to provide unscoped `nested_set_scope` in class level.
156
- def nested_set_scope_without_default_scope(*args)
157
- self.class.base_class.unscoped do
158
- nested_set_scope(*args)
159
- end
162
+ def nested_set_scope_without_default_scope(options = {})
163
+ add_scope_conditions_to_options(options)
164
+
165
+ self.class.base_class.nested_set_scope_without_default_scope options
160
166
  end
161
167
 
162
168
  def to_text
@@ -167,6 +173,13 @@ module CollectiveIdea #:nodoc:
167
173
 
168
174
  protected
169
175
 
176
+ def add_scope_conditions_to_options(options)
177
+ scopes = scope_column_names
178
+ return if scopes.empty?
179
+
180
+ options[:conditions] = scopes.map { |attr| [attr, self[attr] ] }.to_h
181
+ end
182
+
170
183
  def without_self(scope)
171
184
  return scope if new_record?
172
185
  scope.where(["#{self.class.quoted_table_name}.#{self.class.quoted_primary_column_name} != ?", self.primary_id])
@@ -96,8 +96,10 @@ module CollectiveIdea #:nodoc:
96
96
 
97
97
  def lock_nodes_between!(left_bound, right_bound)
98
98
  # select the rows in the model between a and d, and apply a lock
99
- instance_base_class.right_of(left_bound).left_of_right_side(right_bound).
100
- select(primary_column_name).lock(true)
99
+ instance_base_class.nested_set_scope.
100
+ right_of(left_bound).left_of_right_side(right_bound).
101
+ select(primary_column_name).
102
+ lock(true)
101
103
  end
102
104
 
103
105
  def root
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AwesomeNestedSet
4
- VERSION = '3.2.1' unless defined?(::AwesomeNestedSet::VERSION)
4
+ VERSION = '3.3.0' unless defined?(::AwesomeNestedSet::VERSION)
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesome_nested_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
@@ -36,7 +36,7 @@ cert_chain:
36
36
  Hsej0MQ3drCB1eA4c9OXdCUQJnY2aLTq3uNvTbZvoTgWK55eq3KLBJ4zzoKZ4tBX
37
37
  /HIFI/fEwYlI1Ji3oikUrHkc4rWgaQ==
38
38
  -----END CERTIFICATE-----
39
- date: 2020-06-23 00:00:00.000000000 Z
39
+ date: 2021-01-03 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  - !ruby/object:Gem::Version
212
212
  version: '0'
213
213
  requirements: []
214
- rubygems_version: 3.1.2
214
+ rubygems_version: 3.2.3
215
215
  signing_key:
216
216
  specification_version: 4
217
217
  summary: An awesome nested set implementation for Active Record
metadata.gz.sig CHANGED
Binary file