activemodel 6.1.0.rc1 → 6.1.2.1

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: 81dfc9ef6f8512bfd2bb63155c8ffb85b9369bf763c09ac84c01c59619c17d67
4
- data.tar.gz: 6d63d2c7bf9775e33be61539d1bda4d5d6dff0270649601b5c83f4ee6fcd0b6a
3
+ metadata.gz: 3d22a81303a51bc00eeb70780931f1c16fcc625f36b1bee7d7f3bbb28a29dd85
4
+ data.tar.gz: aa65068c74788cf1db46b47dfbe9dcd78f28fb9577e00c627da6e9c0727477ee
5
5
  SHA512:
6
- metadata.gz: e3941d0685fbc36e47f603f6c5322460e9da9e6a414a2e95f71a867f5dbbf1df14f7e673247319e49984560e5d620f9b840560301c38f0183fff44503a85b571
7
- data.tar.gz: c0a52dc12a6aaf4c16ba296641e3a0729b00ebdc158ed3ba8158d748f022ad3dabfeff9bc159d0c96563e8e96bc54c594f37056b77a95a3fe72a9e6777330999
6
+ metadata.gz: 7343297298be5f16edcc6c003b5133ca44252e80bde9c319bbb88059af5d3dc89eca6c5e0214df43a835a31ebc8901688c999d690211b79c04aef618b44fe7e1
7
+ data.tar.gz: 53d4aa8fcee379988cc5d01d12b6908794a04757162516d8f1256096016a149b119e0aec6e5f1fd1d37fe695b3fce2033fab9911afbece19c70ab451d21cd03d
data/CHANGELOG.md CHANGED
@@ -1,4 +1,19 @@
1
- ## Rails 6.1.0.rc1 (November 02, 2020) ##
1
+ ## Rails 6.1.2.1 (February 10, 2021) ##
2
+
3
+ * No changes.
4
+
5
+
6
+ ## Rails 6.1.2 (February 09, 2021) ##
7
+
8
+ * No changes.
9
+
10
+
11
+ ## Rails 6.1.1 (January 07, 2021) ##
12
+
13
+ * No changes.
14
+
15
+
16
+ ## Rails 6.1.0 (December 09, 2020) ##
2
17
 
3
18
  * Pass in `base` instead of `base_class` to Error.human_attribute_name
4
19
 
data/README.rdoc CHANGED
@@ -241,7 +241,7 @@ The latest version of Active Model can be installed with RubyGems:
241
241
 
242
242
  Source code can be downloaded as part of the Rails project on GitHub
243
243
 
244
- * https://github.com/rails/rails/tree/master/activemodel
244
+ * https://github.com/rails/rails/tree/main/activemodel
245
245
 
246
246
 
247
247
  == License
@@ -164,10 +164,10 @@ module ActiveModel
164
164
  type.deserialize(value)
165
165
  end
166
166
 
167
- def _original_value_for_database
168
- value_before_type_cast
169
- end
170
- private :_original_value_for_database
167
+ private
168
+ def _original_value_for_database
169
+ value_before_type_cast
170
+ end
171
171
  end
172
172
 
173
173
  class FromUser < Attribute # :nodoc:
@@ -115,7 +115,7 @@ module ActiveModel
115
115
  end
116
116
 
117
117
  def freeze
118
- @attributes = @attributes.clone.freeze
118
+ @attributes = @attributes.clone.freeze unless frozen?
119
119
  super
120
120
  end
121
121
 
@@ -147,7 +147,7 @@ module ActiveModel
147
147
  conditional = ActiveSupport::Callbacks::Conditionals::Value.new { |v|
148
148
  v != false
149
149
  }
150
- options[:if] = Array(options[:if]) << conditional
150
+ options[:if] = Array(options[:if]) + [conditional]
151
151
  set_callback(:"#{callback}", :after, *args, options, &block)
152
152
  end
153
153
  end
@@ -9,8 +9,8 @@ module ActiveModel
9
9
  module VERSION
10
10
  MAJOR = 6
11
11
  MINOR = 1
12
- TINY = 0
13
- PRE = "rc1"
12
+ TINY = 2
13
+ PRE = "1"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -163,10 +163,10 @@ module ActiveModel
163
163
  if options.key?(:on)
164
164
  options = options.dup
165
165
  options[:on] = Array(options[:on])
166
- options[:if] = Array(options[:if])
167
- options[:if].unshift ->(o) {
168
- !(options[:on] & Array(o.validation_context)).empty?
169
- }
166
+ options[:if] = [
167
+ ->(o) { !(options[:on] & Array(o.validation_context)).empty? },
168
+ *options[:if]
169
+ ]
170
170
  end
171
171
 
172
172
  set_callback(:validate, *args, options, &block)
@@ -56,14 +56,7 @@ module ActiveModel
56
56
  def before_validation(*args, &block)
57
57
  options = args.extract_options!
58
58
 
59
- if options.key?(:on)
60
- options = options.dup
61
- options[:on] = Array(options[:on])
62
- options[:if] = Array(options[:if])
63
- options[:if].unshift ->(o) {
64
- !(options[:on] & Array(o.validation_context)).empty?
65
- }
66
- end
59
+ set_options_for_callback(options)
67
60
 
68
61
  set_callback(:validation, :before, *args, options, &block)
69
62
  end
@@ -99,16 +92,23 @@ module ActiveModel
99
92
  options = options.dup
100
93
  options[:prepend] = true
101
94
 
102
- if options.key?(:on)
103
- options[:on] = Array(options[:on])
104
- options[:if] = Array(options[:if])
105
- options[:if].unshift ->(o) {
106
- !(options[:on] & Array(o.validation_context)).empty?
107
- }
108
- end
95
+ set_options_for_callback(options)
109
96
 
110
97
  set_callback(:validation, :after, *args, options, &block)
111
98
  end
99
+
100
+ private
101
+ def set_options_for_callback(options)
102
+ if options.key?(:on)
103
+ options[:on] = Array(options[:on])
104
+ options[:if] = [
105
+ ->(o) {
106
+ !(options[:on] & Array(o.validation_context)).empty?
107
+ },
108
+ *options[:if]
109
+ ]
110
+ end
111
+ end
112
112
  end
113
113
 
114
114
  private
@@ -64,6 +64,8 @@ module ActiveModel
64
64
  def parse_as_number(raw_value, precision, scale)
65
65
  if raw_value.is_a?(Float)
66
66
  parse_float(raw_value, precision, scale)
67
+ elsif raw_value.is_a?(BigDecimal)
68
+ round(raw_value, scale)
67
69
  elsif raw_value.is_a?(Numeric)
68
70
  raw_value
69
71
  elsif is_integer?(raw_value)
@@ -74,7 +76,11 @@ module ActiveModel
74
76
  end
75
77
 
76
78
  def parse_float(raw_value, precision, scale)
77
- (scale ? raw_value.truncate(scale) : raw_value).to_d(precision)
79
+ round(raw_value, scale).to_d(precision)
80
+ end
81
+
82
+ def round(raw_value, scale)
83
+ scale ? raw_value.round(scale) : raw_value
78
84
  end
79
85
 
80
86
  def is_number?(raw_value, precision, scale)
@@ -108,8 +114,8 @@ module ActiveModel
108
114
  end
109
115
  end
110
116
 
111
- def read_attribute_for_validation(record, attr_name)
112
- return super if record_attribute_changed_in_place?(record, attr_name)
117
+ def prepare_value_for_validation(value, record, attr_name)
118
+ return value if record_attribute_changed_in_place?(record, attr_name)
113
119
 
114
120
  came_from_user = :"#{attr_name}_came_from_user?"
115
121
 
@@ -126,7 +132,7 @@ module ActiveModel
126
132
  end
127
133
  end
128
134
 
129
- raw_value || super
135
+ raw_value || value
130
136
  end
131
137
 
132
138
  def record_attribute_changed_in_place?(record, attr_name)
@@ -147,8 +147,9 @@ module ActiveModel
147
147
  # override +validate_each+ with validation logic.
148
148
  def validate(record)
149
149
  attributes.each do |attribute|
150
- value = read_attribute_for_validation(record, attribute)
150
+ value = record.read_attribute_for_validation(attribute)
151
151
  next if (value.nil? && options[:allow_nil]) || (value.blank? && options[:allow_blank])
152
+ value = prepare_value_for_validation(value, record, attribute)
152
153
  validate_each(record, attribute, value)
153
154
  end
154
155
  end
@@ -166,8 +167,8 @@ module ActiveModel
166
167
  end
167
168
 
168
169
  private
169
- def read_attribute_for_validation(record, attr_name)
170
- record.read_attribute_for_validation(attr_name)
170
+ def prepare_value_for_validation(value, record, attr_name)
171
+ value
171
172
  end
172
173
  end
173
174
 
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: 6.1.0.rc1
4
+ version: 6.1.2.1
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: 2020-11-02 00:00:00.000000000 Z
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: 6.1.0.rc1
19
+ version: 6.1.2.1
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: 6.1.0.rc1
26
+ version: 6.1.2.1
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.
@@ -104,10 +104,10 @@ licenses:
104
104
  - MIT
105
105
  metadata:
106
106
  bug_tracker_uri: https://github.com/rails/rails/issues
107
- changelog_uri: https://github.com/rails/rails/blob/v6.1.0.rc1/activemodel/CHANGELOG.md
108
- documentation_uri: https://api.rubyonrails.org/v6.1.0.rc1/
107
+ changelog_uri: https://github.com/rails/rails/blob/v6.1.2.1/activemodel/CHANGELOG.md
108
+ documentation_uri: https://api.rubyonrails.org/v6.1.2.1/
109
109
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
110
- source_code_uri: https://github.com/rails/rails/tree/v6.1.0.rc1/activemodel
110
+ source_code_uri: https://github.com/rails/rails/tree/v6.1.2.1/activemodel
111
111
  post_install_message:
112
112
  rdoc_options: []
113
113
  require_paths:
@@ -119,11 +119,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
119
119
  version: 2.5.0
120
120
  required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 1.3.1
124
+ version: '0'
125
125
  requirements: []
126
- rubygems_version: 3.1.4
126
+ rubygems_version: 3.0.3
127
127
  signing_key:
128
128
  specification_version: 4
129
129
  summary: A toolkit for building modeling frameworks (part of Rails).