activemodel 5.2.2 → 5.2.4.5
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/CHANGELOG.md +59 -0
- data/lib/active_model/gem_version.rb +2 -2
- data/lib/active_model/type/boolean.rb +10 -1
- data/lib/active_model/type/date.rb +2 -1
- data/lib/active_model/type/date_time.rb +1 -0
- data/lib/active_model/type/helpers.rb +1 -0
- data/lib/active_model/type/helpers/time_value.rb +0 -12
- data/lib/active_model/type/helpers/timezone.rb +19 -0
- data/lib/active_model/type/time.rb +5 -0
- data/lib/active_model/validations/numericality.rb +20 -11
- 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: d36092c1b99284275961af3ad57af797842b10db345a47cbbfc8bb98729bcbef
|
4
|
+
data.tar.gz: 0fff19824645d82690696ce9a92c8d2503bcf278b59297ca8c098780a35a818f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ada5cec1cb36da2223c0a772e8150b65859fa4735e4b4ba8d88c7fb848b0496cdcb827b128c07fd05e5d47ea8632b1f96aca24e6b27b2097be6e4c06915a6c21
|
7
|
+
data.tar.gz: 9a591a616fff0a1cb4f054d239d105ac62edbe3b9845a6ddcd9c3363b78a3ff36f9b5f74aa502ebd3c64d186ac4c9923461e887a4c4a48654550df4557de3cc7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,62 @@
|
|
1
|
+
## Rails 5.2.4.5 (February 10, 2021) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 5.2.4.4 (September 09, 2020) ##
|
7
|
+
|
8
|
+
* No changes.
|
9
|
+
|
10
|
+
|
11
|
+
## Rails 5.2.4.3 (May 18, 2020) ##
|
12
|
+
|
13
|
+
* No changes.
|
14
|
+
|
15
|
+
|
16
|
+
## Rails 5.2.4.1 (December 18, 2019) ##
|
17
|
+
|
18
|
+
* No changes.
|
19
|
+
|
20
|
+
|
21
|
+
## Rails 5.2.4 (November 27, 2019) ##
|
22
|
+
|
23
|
+
* Type cast falsy boolean symbols on boolean attribute as false.
|
24
|
+
|
25
|
+
Fixes #35676.
|
26
|
+
|
27
|
+
*Ryuta Kamizono*
|
28
|
+
|
29
|
+
|
30
|
+
## Rails 5.2.3 (March 27, 2019) ##
|
31
|
+
|
32
|
+
* Fix date value when casting a multiparameter date hash to not convert
|
33
|
+
from Gregorian date to Julian date.
|
34
|
+
|
35
|
+
Before:
|
36
|
+
|
37
|
+
Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
|
38
|
+
=> #<Day id: nil, day: "0001-01-03", created_at: nil, updated_at: nil>
|
39
|
+
|
40
|
+
After:
|
41
|
+
|
42
|
+
Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
|
43
|
+
=> #<Day id: nil, day: "0001-01-01", created_at: nil, updated_at: nil>
|
44
|
+
|
45
|
+
Fixes #28521.
|
46
|
+
|
47
|
+
*Sayan Chakraborty*
|
48
|
+
|
49
|
+
* Fix numericality equality validation of `BigDecimal` and `Float`
|
50
|
+
by casting to `BigDecimal` on both ends of the validation.
|
51
|
+
|
52
|
+
*Gannon McGibbon*
|
53
|
+
|
54
|
+
|
55
|
+
## Rails 5.2.2.1 (March 11, 2019) ##
|
56
|
+
|
57
|
+
* No changes.
|
58
|
+
|
59
|
+
|
1
60
|
## Rails 5.2.2 (December 04, 2018) ##
|
2
61
|
|
3
62
|
* Fix numericality validator to still use value before type cast except Active Record.
|
@@ -14,7 +14,16 @@ module ActiveModel
|
|
14
14
|
# - Empty strings are coerced to +nil+
|
15
15
|
# - All other values will be coerced to +true+
|
16
16
|
class Boolean < Value
|
17
|
-
FALSE_VALUES = [
|
17
|
+
FALSE_VALUES = [
|
18
|
+
false, 0,
|
19
|
+
"0", :"0",
|
20
|
+
"f", :f,
|
21
|
+
"F", :F,
|
22
|
+
"false", :false,
|
23
|
+
"FALSE", :FALSE,
|
24
|
+
"off", :off,
|
25
|
+
"OFF", :OFF,
|
26
|
+
].to_set.freeze
|
18
27
|
|
19
28
|
def type # :nodoc:
|
20
29
|
:boolean
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module ActiveModel
|
4
4
|
module Type
|
5
5
|
class Date < Value # :nodoc:
|
6
|
+
include Helpers::Timezone
|
6
7
|
include Helpers::AcceptsMultiparameterTime.new
|
7
8
|
|
8
9
|
def type
|
@@ -49,7 +50,7 @@ module ActiveModel
|
|
49
50
|
|
50
51
|
def value_from_multiparameter_assignment(*)
|
51
52
|
time = super
|
52
|
-
time && time.
|
53
|
+
time && new_date(time.year, time.mon, time.mday)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
end
|
@@ -21,18 +21,6 @@ module ActiveModel
|
|
21
21
|
value
|
22
22
|
end
|
23
23
|
|
24
|
-
def is_utc?
|
25
|
-
::Time.zone_default.nil? || ::Time.zone_default =~ "UTC"
|
26
|
-
end
|
27
|
-
|
28
|
-
def default_timezone
|
29
|
-
if is_utc?
|
30
|
-
:utc
|
31
|
-
else
|
32
|
-
:local
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
24
|
def apply_seconds_precision(value)
|
37
25
|
return value unless precision && value.respond_to?(:usec)
|
38
26
|
number_of_insignificant_digits = 6 - precision
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/core_ext/time/zones"
|
4
|
+
|
5
|
+
module ActiveModel
|
6
|
+
module Type
|
7
|
+
module Helpers # :nodoc: all
|
8
|
+
module Timezone
|
9
|
+
def is_utc?
|
10
|
+
::Time.zone_default.nil? || ::Time.zone_default =~ "UTC"
|
11
|
+
end
|
12
|
+
|
13
|
+
def default_timezone
|
14
|
+
is_utc? ? :utc : :local
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module ActiveModel
|
4
4
|
module Type
|
5
5
|
class Time < Value # :nodoc:
|
6
|
+
include Helpers::Timezone
|
6
7
|
include Helpers::TimeValue
|
7
8
|
include Helpers::AcceptsMultiparameterTime.new(
|
8
9
|
defaults: { 1 => 1970, 2 => 1, 3 => 1, 4 => 0, 5 => 0 }
|
@@ -12,6 +13,10 @@ module ActiveModel
|
|
12
13
|
:time
|
13
14
|
end
|
14
15
|
|
16
|
+
def serialize(value)
|
17
|
+
super(cast(value))
|
18
|
+
end
|
19
|
+
|
15
20
|
def user_input_in_time_zone(value)
|
16
21
|
return unless value.present?
|
17
22
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "bigdecimal/util"
|
4
|
+
|
3
5
|
module ActiveModel
|
4
6
|
module Validations
|
5
7
|
class NumericalityValidator < EachValidator # :nodoc:
|
@@ -9,6 +11,8 @@ module ActiveModel
|
|
9
11
|
|
10
12
|
RESERVED_OPTIONS = CHECKS.keys + [:only_integer]
|
11
13
|
|
14
|
+
INTEGER_REGEX = /\A[+-]?\d+\z/
|
15
|
+
|
12
16
|
def check_validity!
|
13
17
|
keys = CHECKS.keys - [:odd, :even]
|
14
18
|
options.slice(*keys).each do |option, value|
|
@@ -49,11 +53,7 @@ module ActiveModel
|
|
49
53
|
return
|
50
54
|
end
|
51
55
|
|
52
|
-
|
53
|
-
value = raw_value
|
54
|
-
else
|
55
|
-
value = parse_raw_value_as_a_number(raw_value)
|
56
|
-
end
|
56
|
+
value = parse_as_number(raw_value)
|
57
57
|
|
58
58
|
options.slice(*CHECKS.keys).each do |option, option_value|
|
59
59
|
case option
|
@@ -69,6 +69,8 @@ module ActiveModel
|
|
69
69
|
option_value = record.send(option_value)
|
70
70
|
end
|
71
71
|
|
72
|
+
option_value = parse_as_number(option_value)
|
73
|
+
|
72
74
|
unless value.send(CHECKS[option], option_value)
|
73
75
|
record.errors.add(attr_name, option, filtered_options(value).merge!(count: option_value))
|
74
76
|
end
|
@@ -79,22 +81,29 @@ module ActiveModel
|
|
79
81
|
private
|
80
82
|
|
81
83
|
def is_number?(raw_value)
|
82
|
-
!
|
84
|
+
!parse_as_number(raw_value).nil?
|
83
85
|
rescue ArgumentError, TypeError
|
84
86
|
false
|
85
87
|
end
|
86
88
|
|
87
|
-
def
|
88
|
-
|
89
|
-
|
89
|
+
def parse_as_number(raw_value)
|
90
|
+
if raw_value.is_a?(Float)
|
91
|
+
raw_value.to_d
|
92
|
+
elsif raw_value.is_a?(Numeric)
|
93
|
+
raw_value
|
94
|
+
elsif is_integer?(raw_value)
|
95
|
+
raw_value.to_i
|
96
|
+
elsif !is_hexadecimal_literal?(raw_value)
|
97
|
+
Kernel.Float(raw_value).to_d
|
98
|
+
end
|
90
99
|
end
|
91
100
|
|
92
101
|
def is_integer?(raw_value)
|
93
|
-
|
102
|
+
INTEGER_REGEX === raw_value.to_s
|
94
103
|
end
|
95
104
|
|
96
105
|
def is_hexadecimal_literal?(raw_value)
|
97
|
-
/\A0[xX]/ === raw_value
|
106
|
+
/\A0[xX]/ === raw_value.to_s
|
98
107
|
end
|
99
108
|
|
100
109
|
def filtered_options(value)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.2.
|
4
|
+
version: 5.2.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.2.
|
19
|
+
version: 5.2.4.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 5.2.
|
26
|
+
version: 5.2.4.5
|
27
27
|
description: A toolkit for building modeling frameworks like Active Record. Rich support
|
28
28
|
for attributes, callbacks, validations, serialization, internationalization, and
|
29
29
|
testing.
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- lib/active_model/type/helpers/mutable.rb
|
74
74
|
- lib/active_model/type/helpers/numeric.rb
|
75
75
|
- lib/active_model/type/helpers/time_value.rb
|
76
|
+
- lib/active_model/type/helpers/timezone.rb
|
76
77
|
- lib/active_model/type/immutable_string.rb
|
77
78
|
- lib/active_model/type/integer.rb
|
78
79
|
- lib/active_model/type/registry.rb
|
@@ -100,8 +101,8 @@ homepage: http://rubyonrails.org
|
|
100
101
|
licenses:
|
101
102
|
- MIT
|
102
103
|
metadata:
|
103
|
-
source_code_uri: https://github.com/rails/rails/tree/v5.2.
|
104
|
-
changelog_uri: https://github.com/rails/rails/blob/v5.2.
|
104
|
+
source_code_uri: https://github.com/rails/rails/tree/v5.2.4.5/activemodel
|
105
|
+
changelog_uri: https://github.com/rails/rails/blob/v5.2.4.5/activemodel/CHANGELOG.md
|
105
106
|
post_install_message:
|
106
107
|
rdoc_options: []
|
107
108
|
require_paths:
|
@@ -117,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
118
|
- !ruby/object:Gem::Version
|
118
119
|
version: '0'
|
119
120
|
requirements: []
|
120
|
-
|
121
|
-
rubygems_version: 2.7.6
|
121
|
+
rubygems_version: 3.0.3
|
122
122
|
signing_key:
|
123
123
|
specification_version: 4
|
124
124
|
summary: A toolkit for building modeling frameworks (part of Rails).
|