activeentity 0.0.1.beta15 → 6.1.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 +4 -4
- data/README.md +20 -3
- data/lib/active_entity.rb +1 -0
- data/lib/active_entity/attribute_assignment.rb +7 -11
- data/lib/active_entity/attribute_methods.rb +40 -50
- data/lib/active_entity/attribute_methods/before_type_cast.rb +5 -5
- data/lib/active_entity/attribute_methods/primary_key.rb +6 -8
- data/lib/active_entity/attribute_methods/query.rb +2 -6
- data/lib/active_entity/attribute_methods/read.rb +9 -10
- data/lib/active_entity/attribute_methods/write.rb +14 -21
- data/lib/active_entity/base.rb +0 -2
- data/lib/active_entity/{define_callbacks.rb → callbacks.rb} +5 -5
- data/lib/active_entity/core.rb +1 -0
- data/lib/active_entity/gem_version.rb +3 -3
- data/lib/active_entity/validations/uniqueness_on_active_record.rb +2 -13
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a48deda3be4192f640dfdf3feebc0152f65cd41eb7483e9c0d082a1565071227
|
4
|
+
data.tar.gz: 79b7877eee5cf2c3f9ae976533f15a0651b2cc0257174b2f7ea8a93034123212
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 718bced85e2be2eb42ad37daca8ba3a9d1a1c63f3e91f6fedcea297c57abce9c596ab2bad681ecaad2d13b001edb7d695872021ebab5a57a954a9b63a409ebb5
|
7
|
+
data.tar.gz: 37eafc74002e3a8b5e4af2c017f070ba782c6b347dd40d92dcf25f867cf9be79b72fd4dba6e378766422741325e9e9df9c09dad43a35deb5e9ab1e496cdfb1f3
|
data/README.md
CHANGED
@@ -65,7 +65,7 @@ Supported Active Record validations:
|
|
65
65
|
|
66
66
|
#### `subset` validation
|
67
67
|
|
68
|
-
Because Active Entity supports array attribute, for some reason,
|
68
|
+
Because Active Entity supports array attribute, for some reason, you may want to test values of an array attribute are all included in a given set.
|
69
69
|
|
70
70
|
Active Entity provides `subset` validation to achieve that, it usage similar to `inclusion` or `exclusion`
|
71
71
|
|
@@ -76,9 +76,9 @@ class Steak < ActiveEntity::Base
|
|
76
76
|
end
|
77
77
|
```
|
78
78
|
|
79
|
-
#### `
|
79
|
+
#### `uniqueness_in_embeds` validation
|
80
80
|
|
81
|
-
Active Entity provides `
|
81
|
+
Active Entity provides `uniqueness_in_embeds` validation to test duplicate nesting virtual record.
|
82
82
|
|
83
83
|
Argument `key` is attribute name of nested model, it also supports multiple attributes by given an array.
|
84
84
|
|
@@ -101,6 +101,23 @@ class Book < ActiveEntity::Base
|
|
101
101
|
end
|
102
102
|
```
|
103
103
|
|
104
|
+
#### `uniqueness_in_active_record` validation
|
105
|
+
|
106
|
+
Active Entity provides `uniqueness_in_active_record` validation to test given `scope` doesn't present in ActiveRecord model.
|
107
|
+
|
108
|
+
The usage same as [uniqueness](https://guides.rubyonrails.org/active_record_validations.html#uniqueness) in addition you must give a AR model `class_name`
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
class Candidate < ActiveEntity::Base
|
112
|
+
attribute :name, :string
|
113
|
+
|
114
|
+
validates :name,
|
115
|
+
uniqueness_on_active_record: {
|
116
|
+
class_name: "Staff"
|
117
|
+
}
|
118
|
+
end
|
119
|
+
```
|
120
|
+
|
104
121
|
### Others
|
105
122
|
|
106
123
|
These Active Record feature also available in Active Entity
|
data/lib/active_entity.rb
CHANGED
@@ -6,29 +6,25 @@ module ActiveEntity
|
|
6
6
|
module AttributeAssignment
|
7
7
|
include ActiveModel::AttributeAssignment
|
8
8
|
|
9
|
-
def assign_attributes(attributes)
|
10
|
-
super(attributes.dup)
|
11
|
-
end
|
12
|
-
|
13
9
|
private
|
14
10
|
|
15
11
|
def _assign_attributes(attributes)
|
16
|
-
multi_parameter_attributes
|
17
|
-
nested_parameter_attributes = {}
|
12
|
+
multi_parameter_attributes = nested_parameter_attributes = nil
|
18
13
|
|
19
14
|
attributes.each do |k, v|
|
20
15
|
key = k.to_s
|
21
16
|
|
22
17
|
if key.include?("(")
|
23
|
-
multi_parameter_attributes[key] =
|
18
|
+
(multi_parameter_attributes ||= {})[key] = v
|
24
19
|
elsif v.is_a?(Hash)
|
25
|
-
nested_parameter_attributes[key] =
|
20
|
+
(nested_parameter_attributes ||= {})[key] = v
|
21
|
+
else
|
22
|
+
_assign_attribute(key, v)
|
26
23
|
end
|
27
24
|
end
|
28
|
-
super(attributes)
|
29
25
|
|
30
|
-
assign_nested_parameter_attributes(nested_parameter_attributes)
|
31
|
-
assign_multiparameter_attributes(multi_parameter_attributes)
|
26
|
+
assign_nested_parameter_attributes(nested_parameter_attributes) if nested_parameter_attributes
|
27
|
+
assign_multiparameter_attributes(multi_parameter_attributes) if multi_parameter_attributes
|
32
28
|
end
|
33
29
|
|
34
30
|
# Assign any deferred nested attributes after the base attributes have been set.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "mutex_m"
|
4
|
+
require "active_support/core_ext/enumerable"
|
4
5
|
|
5
6
|
module ActiveEntity
|
6
7
|
# = Active Entity Attribute Methods
|
@@ -26,6 +27,17 @@ module ActiveEntity
|
|
26
27
|
include Mutex_m
|
27
28
|
end
|
28
29
|
|
30
|
+
class << self
|
31
|
+
def dangerous_attribute_methods # :nodoc:
|
32
|
+
@dangerous_attribute_methods ||= (
|
33
|
+
Base.instance_methods +
|
34
|
+
Base.private_instance_methods -
|
35
|
+
Base.superclass.instance_methods -
|
36
|
+
Base.superclass.private_instance_methods
|
37
|
+
).map { |m| -m.to_s }.to_set.freeze
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
29
41
|
module ClassMethods
|
30
42
|
def inherited(child_class) #:nodoc:
|
31
43
|
child_class.initialize_generated_modules
|
@@ -95,7 +107,7 @@ module ActiveEntity
|
|
95
107
|
# A method name is 'dangerous' if it is already (re)defined by Active Entity, but
|
96
108
|
# not by any ancestors. (So 'puts' is not dangerous but 'save' is.)
|
97
109
|
def dangerous_attribute_method?(name) # :nodoc:
|
98
|
-
|
110
|
+
::ActiveEntity::AttributeMethods.dangerous_attribute_methods.include?(name.to_s)
|
99
111
|
end
|
100
112
|
|
101
113
|
def method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc:
|
@@ -147,25 +159,40 @@ module ActiveEntity
|
|
147
159
|
# class Person < ActiveEntity::Base
|
148
160
|
# end
|
149
161
|
#
|
150
|
-
# Person.has_attribute?('name')
|
151
|
-
# Person.has_attribute?(
|
152
|
-
# Person.has_attribute?(:
|
162
|
+
# Person.has_attribute?('name') # => true
|
163
|
+
# Person.has_attribute?('new_name') # => true
|
164
|
+
# Person.has_attribute?(:age) # => true
|
165
|
+
# Person.has_attribute?(:nothing) # => false
|
153
166
|
def has_attribute?(attr_name)
|
154
|
-
|
167
|
+
attr_name = attr_name.to_s
|
168
|
+
attr_name = attribute_aliases[attr_name] || attr_name
|
169
|
+
attribute_types.key?(attr_name)
|
170
|
+
end
|
171
|
+
|
172
|
+
def _has_attribute?(attr_name) # :nodoc:
|
173
|
+
attribute_types.key?(attr_name)
|
155
174
|
end
|
156
175
|
end
|
157
176
|
|
158
177
|
# Returns +true+ if the given attribute is in the attributes hash, otherwise +false+.
|
159
178
|
#
|
160
179
|
# class Person < ActiveEntity::Base
|
180
|
+
# alias_attribute :new_name, :name
|
161
181
|
# end
|
162
182
|
#
|
163
183
|
# person = Person.new
|
164
|
-
# person.has_attribute?(:name)
|
165
|
-
# person.has_attribute?(
|
166
|
-
# person.has_attribute?(
|
184
|
+
# person.has_attribute?(:name) # => true
|
185
|
+
# person.has_attribute?(:new_name) # => true
|
186
|
+
# person.has_attribute?('age') # => true
|
187
|
+
# person.has_attribute?(:nothing) # => false
|
167
188
|
def has_attribute?(attr_name)
|
168
|
-
|
189
|
+
attr_name = attr_name.to_s
|
190
|
+
attr_name = self.class.attribute_aliases[attr_name] || attr_name
|
191
|
+
@attributes.key?(attr_name)
|
192
|
+
end
|
193
|
+
|
194
|
+
def _has_attribute?(attr_name) # :nodoc:
|
195
|
+
@attributes.key?(attr_name)
|
169
196
|
end
|
170
197
|
|
171
198
|
# Returns an array of names for the attributes available on this object.
|
@@ -209,6 +236,7 @@ module ActiveEntity
|
|
209
236
|
# person.attribute_for_inspect(:tag_ids)
|
210
237
|
# # => "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]"
|
211
238
|
def attribute_for_inspect(attr_name)
|
239
|
+
attr_name = attr_name.to_s
|
212
240
|
value = _read_attribute(attr_name)
|
213
241
|
format_for_inspect(value)
|
214
242
|
end
|
@@ -228,8 +256,9 @@ module ActiveEntity
|
|
228
256
|
# task.is_done = true
|
229
257
|
# task.attribute_present?(:title) # => true
|
230
258
|
# task.attribute_present?(:is_done) # => true
|
231
|
-
def attribute_present?(
|
232
|
-
|
259
|
+
def attribute_present?(attr_name)
|
260
|
+
attr_name = attr_name.to_s
|
261
|
+
value = _read_attribute(attr_name)
|
233
262
|
!value.nil? && !(value.respond_to?(:empty?) && value.empty?)
|
234
263
|
end
|
235
264
|
|
@@ -268,39 +297,6 @@ module ActiveEntity
|
|
268
297
|
write_attribute(attr_name, value)
|
269
298
|
end
|
270
299
|
|
271
|
-
# Returns the name of all database fields which have been read from this
|
272
|
-
# model. This can be useful in development mode to determine which fields
|
273
|
-
# need to be selected. For performance critical pages, selecting only the
|
274
|
-
# required fields can be an easy performance win (assuming you aren't using
|
275
|
-
# all of the fields on the model).
|
276
|
-
#
|
277
|
-
# For example:
|
278
|
-
#
|
279
|
-
# class PostsController < ActionController::Base
|
280
|
-
# after_action :print_accessed_fields, only: :index
|
281
|
-
#
|
282
|
-
# def index
|
283
|
-
# @posts = Post.all
|
284
|
-
# end
|
285
|
-
#
|
286
|
-
# private
|
287
|
-
#
|
288
|
-
# def print_accessed_fields
|
289
|
-
# p @posts.first.accessed_fields
|
290
|
-
# end
|
291
|
-
# end
|
292
|
-
#
|
293
|
-
# Which allows you to quickly change your code to:
|
294
|
-
#
|
295
|
-
# class PostsController < ActionController::Base
|
296
|
-
# def index
|
297
|
-
# @posts = Post.select(:id, :title, :author_id, :updated_at)
|
298
|
-
# end
|
299
|
-
# end
|
300
|
-
def accessed_fields
|
301
|
-
@attributes.accessed
|
302
|
-
end
|
303
|
-
|
304
300
|
private
|
305
301
|
|
306
302
|
def attribute_method?(attr_name)
|
@@ -308,12 +304,6 @@ module ActiveEntity
|
|
308
304
|
defined?(@attributes) && @attributes.key?(attr_name)
|
309
305
|
end
|
310
306
|
|
311
|
-
def attributes_with_values(attribute_names)
|
312
|
-
attribute_names.each_with_object({}) do |name, attrs|
|
313
|
-
attrs[name] = _read_attribute(name)
|
314
|
-
end
|
315
|
-
end
|
316
|
-
|
317
307
|
def format_for_inspect(value)
|
318
308
|
if value.is_a?(String) && value.length > 50
|
319
309
|
"#{value[0, 50]}...".inspect
|
@@ -46,7 +46,7 @@ module ActiveEntity
|
|
46
46
|
# task.read_attribute_before_type_cast('completed_on') # => "2012-10-21"
|
47
47
|
# task.read_attribute_before_type_cast(:completed_on) # => "2012-10-21"
|
48
48
|
def read_attribute_before_type_cast(attr_name)
|
49
|
-
|
49
|
+
attribute_before_type_cast(attr_name.to_s)
|
50
50
|
end
|
51
51
|
|
52
52
|
# Returns a hash of attributes before typecasting and deserialization.
|
@@ -66,12 +66,12 @@ module ActiveEntity
|
|
66
66
|
private
|
67
67
|
|
68
68
|
# Dispatch target for <tt>*_before_type_cast</tt> attribute methods.
|
69
|
-
def attribute_before_type_cast(
|
70
|
-
|
69
|
+
def attribute_before_type_cast(attr_name)
|
70
|
+
@attributes[attr_name].value_before_type_cast
|
71
71
|
end
|
72
72
|
|
73
|
-
def attribute_came_from_user?(
|
74
|
-
@attributes[
|
73
|
+
def attribute_came_from_user?(attr_name)
|
74
|
+
@attributes[attr_name].came_from_user?
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -16,29 +16,27 @@ module ActiveEntity
|
|
16
16
|
|
17
17
|
# Returns the primary key column's value.
|
18
18
|
def id
|
19
|
-
primary_key
|
20
|
-
_read_attribute(primary_key) if primary_key
|
19
|
+
_read_attribute(@primary_key)
|
21
20
|
end
|
22
21
|
|
23
22
|
# Sets the primary key column's value.
|
24
23
|
def id=(value)
|
25
|
-
primary_key
|
26
|
-
_write_attribute(primary_key, value) if primary_key
|
24
|
+
_write_attribute(@primary_key, value)
|
27
25
|
end
|
28
26
|
|
29
27
|
# Queries the primary key column's value.
|
30
28
|
def id?
|
31
|
-
query_attribute(
|
29
|
+
query_attribute(@primary_key)
|
32
30
|
end
|
33
31
|
|
34
32
|
# Returns the primary key column's value before type cast.
|
35
33
|
def id_before_type_cast
|
36
|
-
read_attribute_before_type_cast(
|
34
|
+
read_attribute_before_type_cast(@primary_key)
|
37
35
|
end
|
38
36
|
|
39
37
|
# Returns the primary key column's previous value.
|
40
38
|
def id_was
|
41
|
-
attribute_was(
|
39
|
+
attribute_was(@primary_key)
|
42
40
|
end
|
43
41
|
|
44
42
|
private
|
@@ -48,7 +46,7 @@ module ActiveEntity
|
|
48
46
|
end
|
49
47
|
|
50
48
|
module ClassMethods
|
51
|
-
ID_ATTRIBUTE_METHODS = %w(id id= id? id_before_type_cast id_was
|
49
|
+
ID_ATTRIBUTE_METHODS = %w(id id= id? id_before_type_cast id_was).to_set
|
52
50
|
|
53
51
|
def instance_method_already_implemented?(method_name)
|
54
52
|
super || primary_key && ID_ATTRIBUTE_METHODS.include?(method_name)
|
@@ -31,12 +31,8 @@ module ActiveEntity
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
# Dispatch target for <tt>*?</tt> attribute methods.
|
37
|
-
def attribute?(attribute_name)
|
38
|
-
query_attribute(attribute_name)
|
39
|
-
end
|
34
|
+
alias :attribute? :query_attribute
|
35
|
+
private :attribute?
|
40
36
|
end
|
41
37
|
end
|
42
38
|
end
|
@@ -8,16 +8,14 @@ module ActiveEntity
|
|
8
8
|
module ClassMethods # :nodoc:
|
9
9
|
private
|
10
10
|
|
11
|
-
def define_method_attribute(name)
|
11
|
+
def define_method_attribute(name, owner:)
|
12
12
|
ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method(
|
13
|
-
|
13
|
+
owner, name
|
14
14
|
) do |temp_method_name, attr_name_expr|
|
15
|
-
|
16
|
-
def #{temp_method_name}
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
RUBY
|
15
|
+
owner <<
|
16
|
+
"def #{temp_method_name}" <<
|
17
|
+
" _read_attribute(#{attr_name_expr}) { |n| missing_attribute(n, caller) }" <<
|
18
|
+
"end"
|
21
19
|
end
|
22
20
|
end
|
23
21
|
end
|
@@ -29,13 +27,14 @@ module ActiveEntity
|
|
29
27
|
name = attr_name.to_s
|
30
28
|
name = self.class.attribute_aliases[name] || name
|
31
29
|
|
32
|
-
|
30
|
+
name = @primary_key if name == "id" && @primary_key
|
31
|
+
@attributes.fetch_value(name, &block)
|
33
32
|
end
|
34
33
|
|
35
34
|
# This method exists to avoid the expensive primary_key check internally, without
|
36
35
|
# breaking compatibility with the read_attribute API
|
37
36
|
def _read_attribute(attr_name, &block) # :nodoc
|
38
|
-
@attributes.fetch_value(attr_name
|
37
|
+
@attributes.fetch_value(attr_name, &block)
|
39
38
|
end
|
40
39
|
|
41
40
|
alias :attribute :_read_attribute
|
@@ -12,16 +12,14 @@ module ActiveEntity
|
|
12
12
|
module ClassMethods # :nodoc:
|
13
13
|
private
|
14
14
|
|
15
|
-
def define_method_attribute=(name)
|
15
|
+
def define_method_attribute=(name, owner:)
|
16
16
|
ActiveModel::AttributeMethods::AttrNames.define_attribute_accessor_method(
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def #{temp_method_name}(value)
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
RUBY
|
17
|
+
owner, name, writer: true,
|
18
|
+
) do |temp_method_name, attr_name_expr|
|
19
|
+
owner <<
|
20
|
+
"def #{temp_method_name}(value)" <<
|
21
|
+
" _write_attribute(#{attr_name_expr}, value)" <<
|
22
|
+
"end"
|
25
23
|
end
|
26
24
|
end
|
27
25
|
end
|
@@ -33,28 +31,23 @@ module ActiveEntity
|
|
33
31
|
name = attr_name.to_s
|
34
32
|
name = self.class.attribute_aliases[name] || name
|
35
33
|
|
36
|
-
|
34
|
+
name = @primary_key if name == "id" && @primary_key
|
35
|
+
@attributes.write_from_user(name, value)
|
37
36
|
end
|
38
37
|
|
39
38
|
# This method exists to avoid the expensive primary_key check internally, without
|
40
39
|
# breaking compatibility with the write_attribute API
|
41
40
|
def _write_attribute(attr_name, value) # :nodoc:
|
42
|
-
|
43
|
-
|
44
|
-
@attributes.write_from_user(attr_name.to_s, value)
|
45
|
-
value
|
41
|
+
@attributes.write_from_user(attr_name, value)
|
46
42
|
end
|
47
43
|
|
44
|
+
alias :attribute= :_write_attribute
|
45
|
+
private :attribute=
|
46
|
+
|
48
47
|
private
|
49
48
|
|
50
49
|
def write_attribute_without_type_cast(attr_name, value)
|
51
|
-
@attributes.write_cast_value(attr_name
|
52
|
-
value
|
53
|
-
end
|
54
|
-
|
55
|
-
# Dispatch target for <tt>*=</tt> attribute methods.
|
56
|
-
def attribute=(attribute_name, value)
|
57
|
-
_write_attribute(attribute_name, value)
|
50
|
+
@attributes.write_cast_value(attr_name, value)
|
58
51
|
end
|
59
52
|
end
|
60
53
|
end
|
data/lib/active_entity/base.rb
CHANGED
@@ -6,7 +6,6 @@ require "active_support/descendants_tracker"
|
|
6
6
|
require "active_support/time"
|
7
7
|
require "active_support/core_ext/class/subclasses"
|
8
8
|
require "active_entity/attribute_decorators"
|
9
|
-
require "active_entity/define_callbacks"
|
10
9
|
require "active_entity/attributes"
|
11
10
|
|
12
11
|
module ActiveEntity #:nodoc:
|
@@ -280,7 +279,6 @@ module ActiveEntity #:nodoc:
|
|
280
279
|
include Validations
|
281
280
|
include Attributes
|
282
281
|
include AttributeDecorators
|
283
|
-
include DefineCallbacks
|
284
282
|
include AttributeMethods
|
285
283
|
include Callbacks
|
286
284
|
include Associations
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActiveEntity
|
4
|
-
|
5
|
-
# define callbacks, but continue to have its version of +save+ be the super
|
6
|
-
# method of ActiveEntity::Callbacks. This will be removed when the removal
|
7
|
-
# of deprecated code removes this need.
|
8
|
-
module DefineCallbacks
|
4
|
+
module Callbacks
|
9
5
|
extend ActiveSupport::Concern
|
10
6
|
|
7
|
+
CALLBACKS = [
|
8
|
+
:after_initialize, :before_validation, :after_validation
|
9
|
+
]
|
10
|
+
|
11
11
|
module ClassMethods # :nodoc:
|
12
12
|
include ActiveModel::Callbacks
|
13
13
|
end
|
data/lib/active_entity/core.rb
CHANGED
@@ -27,7 +27,7 @@ module ActiveEntity
|
|
27
27
|
raise ArgumentError, "Must provide one of option :class_name or :class."
|
28
28
|
end
|
29
29
|
unless @klass < ActiveRecord::Base
|
30
|
-
raise ArgumentError, "Class must be an Active Entity model, but got #{@
|
30
|
+
raise ArgumentError, "Class must be an Active Entity model, but got #{@klass}."
|
31
31
|
end
|
32
32
|
if @klass.abstract_class?
|
33
33
|
raise ArgumentError, "Class can't be an abstract class."
|
@@ -39,13 +39,6 @@ module ActiveEntity
|
|
39
39
|
value = map_enum_attribute(finder_class, attribute, value)
|
40
40
|
|
41
41
|
relation = build_relation(finder_class, attribute, value)
|
42
|
-
if record.persisted?
|
43
|
-
if finder_class.primary_key
|
44
|
-
relation = relation.where.not(finder_class.primary_key => record.id_in_database)
|
45
|
-
else
|
46
|
-
raise UnknownPrimaryKey.new(finder_class, "Cannot validate uniqueness for persisted record without primary key.")
|
47
|
-
end
|
48
|
-
end
|
49
42
|
relation = scope_relation(record, relation)
|
50
43
|
relation = relation.merge(options[:conditions]) if options[:conditions]
|
51
44
|
|
@@ -94,11 +87,7 @@ module ActiveEntity
|
|
94
87
|
|
95
88
|
def scope_relation(record, relation)
|
96
89
|
Array(options[:scope]).each do |scope_item|
|
97
|
-
scope_value =
|
98
|
-
record.association(scope_item).reader
|
99
|
-
else
|
100
|
-
record._read_attribute(scope_item)
|
101
|
-
end
|
90
|
+
scope_value = record._read_attribute(scope_item)
|
102
91
|
relation = relation.where(scope_item => scope_value)
|
103
92
|
end
|
104
93
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeentity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jasl
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -89,10 +89,10 @@ files:
|
|
89
89
|
- lib/active_entity/attribute_methods/write.rb
|
90
90
|
- lib/active_entity/attributes.rb
|
91
91
|
- lib/active_entity/base.rb
|
92
|
+
- lib/active_entity/callbacks.rb
|
92
93
|
- lib/active_entity/coders/json.rb
|
93
94
|
- lib/active_entity/coders/yaml_column.rb
|
94
95
|
- lib/active_entity/core.rb
|
95
|
-
- lib/active_entity/define_callbacks.rb
|
96
96
|
- lib/active_entity/enum.rb
|
97
97
|
- lib/active_entity/errors.rb
|
98
98
|
- lib/active_entity/gem_version.rb
|
@@ -135,7 +135,7 @@ homepage: https://github.com/jasl/activeentity
|
|
135
135
|
licenses:
|
136
136
|
- MIT
|
137
137
|
metadata: {}
|
138
|
-
post_install_message:
|
138
|
+
post_install_message:
|
139
139
|
rdoc_options: []
|
140
140
|
require_paths:
|
141
141
|
- lib
|
@@ -146,12 +146,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
146
|
version: 2.5.0
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- - "
|
149
|
+
- - ">="
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
151
|
+
version: '0'
|
152
152
|
requirements: []
|
153
|
-
rubygems_version: 3.1.
|
154
|
-
signing_key:
|
153
|
+
rubygems_version: 3.1.4
|
154
|
+
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: Rails virtual model solution based on ActiveModel.
|
157
157
|
test_files: []
|