activeentity 0.0.1.beta18 → 6.1.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 +4 -4
- data/lib/active_entity/attribute_methods.rb +39 -11
- data/lib/active_entity/attribute_methods/before_type_cast.rb +5 -5
- data/lib/active_entity/attribute_methods/primary_key.rb +5 -7
- data/lib/active_entity/attribute_methods/query.rb +2 -6
- data/lib/active_entity/attribute_methods/read.rb +9 -11
- data/lib/active_entity/attribute_methods/write.rb +13 -19
- data/lib/active_entity/gem_version.rb +4 -4
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a443ac8ce930488a0c53dab9543f9f0c7969c3692111451fecb633f462480f0
|
4
|
+
data.tar.gz: 99551ed1ea119f9d9643cb77d7ac7afc8aeea0d08cbaf7ec8a1b16e9c7a5a89e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa0b0819cf677b6972a951935d8f0aa7038dc5da8043ba369f8dbf19eaccf56e21ee2aea8352ab1ac9c1ccdb6f7cc2108f5fdd62edd7b47ddedb1059d52a174f
|
7
|
+
data.tar.gz: 12ae33174d9fdc60139f150d01462fd9d3c07b3a12b033e4e349e57f8081140965890c989279b98069aa9afab68730f9b80278e47e3fef648515633b578e77e6
|
@@ -27,6 +27,17 @@ module ActiveEntity
|
|
27
27
|
include Mutex_m
|
28
28
|
end
|
29
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
|
+
|
30
41
|
module ClassMethods
|
31
42
|
def inherited(child_class) #:nodoc:
|
32
43
|
child_class.initialize_generated_modules
|
@@ -96,7 +107,7 @@ module ActiveEntity
|
|
96
107
|
# A method name is 'dangerous' if it is already (re)defined by Active Entity, but
|
97
108
|
# not by any ancestors. (So 'puts' is not dangerous but 'save' is.)
|
98
109
|
def dangerous_attribute_method?(name) # :nodoc:
|
99
|
-
|
110
|
+
::ActiveEntity::AttributeMethods.dangerous_attribute_methods.include?(name.to_s)
|
100
111
|
end
|
101
112
|
|
102
113
|
def method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc:
|
@@ -148,25 +159,40 @@ module ActiveEntity
|
|
148
159
|
# class Person < ActiveEntity::Base
|
149
160
|
# end
|
150
161
|
#
|
151
|
-
# Person.has_attribute?('name')
|
152
|
-
# Person.has_attribute?(
|
153
|
-
# 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
|
154
166
|
def has_attribute?(attr_name)
|
155
|
-
|
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)
|
156
174
|
end
|
157
175
|
end
|
158
176
|
|
159
177
|
# Returns +true+ if the given attribute is in the attributes hash, otherwise +false+.
|
160
178
|
#
|
161
179
|
# class Person < ActiveEntity::Base
|
180
|
+
# alias_attribute :new_name, :name
|
162
181
|
# end
|
163
182
|
#
|
164
183
|
# person = Person.new
|
165
|
-
# person.has_attribute?(:name)
|
166
|
-
# person.has_attribute?(
|
167
|
-
# 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
|
168
188
|
def has_attribute?(attr_name)
|
169
|
-
|
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)
|
170
196
|
end
|
171
197
|
|
172
198
|
# Returns an array of names for the attributes available on this object.
|
@@ -210,6 +236,7 @@ module ActiveEntity
|
|
210
236
|
# person.attribute_for_inspect(:tag_ids)
|
211
237
|
# # => "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]"
|
212
238
|
def attribute_for_inspect(attr_name)
|
239
|
+
attr_name = attr_name.to_s
|
213
240
|
value = _read_attribute(attr_name)
|
214
241
|
format_for_inspect(value)
|
215
242
|
end
|
@@ -229,8 +256,9 @@ module ActiveEntity
|
|
229
256
|
# task.is_done = true
|
230
257
|
# task.attribute_present?(:title) # => true
|
231
258
|
# task.attribute_present?(:is_done) # => true
|
232
|
-
def attribute_present?(
|
233
|
-
|
259
|
+
def attribute_present?(attr_name)
|
260
|
+
attr_name = attr_name.to_s
|
261
|
+
value = _read_attribute(attr_name)
|
234
262
|
!value.nil? && !(value.respond_to?(:empty?) && value.empty?)
|
235
263
|
end
|
236
264
|
|
@@ -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
|
@@ -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,17 +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
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
_read_attribute(name) { |n| missing_attribute(n, caller) }
|
20
|
-
end
|
21
|
-
RUBY
|
15
|
+
owner <<
|
16
|
+
"def #{temp_method_name}" <<
|
17
|
+
" _read_attribute(#{attr_name_expr}) { |n| missing_attribute(n, caller) }" <<
|
18
|
+
"end"
|
22
19
|
end
|
23
20
|
end
|
24
21
|
end
|
@@ -30,13 +27,14 @@ module ActiveEntity
|
|
30
27
|
name = attr_name.to_s
|
31
28
|
name = self.class.attribute_aliases[name] || name
|
32
29
|
|
33
|
-
|
30
|
+
name = @primary_key if name == "id" && @primary_key
|
31
|
+
@attributes.fetch_value(name, &block)
|
34
32
|
end
|
35
33
|
|
36
34
|
# This method exists to avoid the expensive primary_key check internally, without
|
37
35
|
# breaking compatibility with the read_attribute API
|
38
36
|
def _read_attribute(attr_name, &block) # :nodoc
|
39
|
-
@attributes.fetch_value(attr_name
|
37
|
+
@attributes.fetch_value(attr_name, &block)
|
40
38
|
end
|
41
39
|
|
42
40
|
alias :attribute :_read_attribute
|
@@ -12,17 +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
|
-
|
17
|
+
owner, name, writer: true,
|
18
18
|
) do |temp_method_name, attr_name_expr|
|
19
|
-
|
20
|
-
#
|
21
|
-
|
22
|
-
|
23
|
-
_write_attribute(name, value)
|
24
|
-
end
|
25
|
-
RUBY
|
19
|
+
owner <<
|
20
|
+
"def #{temp_method_name}(value)" <<
|
21
|
+
" _write_attribute(#{attr_name_expr}, value)" <<
|
22
|
+
"end"
|
26
23
|
end
|
27
24
|
end
|
28
25
|
end
|
@@ -34,26 +31,23 @@ module ActiveEntity
|
|
34
31
|
name = attr_name.to_s
|
35
32
|
name = self.class.attribute_aliases[name] || name
|
36
33
|
|
37
|
-
|
34
|
+
name = @primary_key if name == "id" && @primary_key
|
35
|
+
@attributes.write_from_user(name, value)
|
38
36
|
end
|
39
37
|
|
40
38
|
# This method exists to avoid the expensive primary_key check internally, without
|
41
39
|
# breaking compatibility with the write_attribute API
|
42
40
|
def _write_attribute(attr_name, value) # :nodoc:
|
43
|
-
@attributes.write_from_user(attr_name
|
44
|
-
value
|
41
|
+
@attributes.write_from_user(attr_name, value)
|
45
42
|
end
|
46
43
|
|
44
|
+
alias :attribute= :_write_attribute
|
45
|
+
private :attribute=
|
46
|
+
|
47
47
|
private
|
48
48
|
|
49
49
|
def write_attribute_without_type_cast(attr_name, value)
|
50
|
-
@attributes.write_cast_value(attr_name
|
51
|
-
value
|
52
|
-
end
|
53
|
-
|
54
|
-
# Dispatch target for <tt>*=</tt> attribute methods.
|
55
|
-
def attribute=(attribute_name, value)
|
56
|
-
_write_attribute(attribute_name, value)
|
50
|
+
@attributes.write_cast_value(attr_name, value)
|
57
51
|
end
|
58
52
|
end
|
59
53
|
end
|
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.0
|
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-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -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: []
|