| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Fixes #29512.
|
| |
|
| |
|
| |
|
|
|
| |
The output of two string attributes is displayed differently in the docs. Standardize the output by always showing it as a comment.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Allow a default value to be declared for class_attribute
* Convert to using class_attribute default rather than explicit setter
* Removed instance_accessor option by mistake
* False is a valid default value
* Documentation
|
|
|
| |
a user input for a decimal column were ignored by numerically validations
|
|
|
|
| |
[ci skip]
|
|
|
|
|
|
| |
".. with __dir__ we can restore order in the Universe." - by @fxn
Related to 5b8738c2df003a96f0e490c43559747618d10f5f
|
|
|
|
|
| |
When define callbacks latest definition on the same callback/method
overwrites previous ones.
|
| |
|
| |
|
|
|
|
| |
Follow up of #17148.
|
|
|
|
|
|
| |
We already have a _read_attribute method that can get the value we need
from the model. Lets define that method in AM::Dirty and use the
existing one from AR::Dirty rather than introducing a new method.
|
|\
| |
| |
| |
| | |
bogdanvlviv/fix-dirty-attributes-if-override-attr_accessor
Fix inconsistency with changed attributes when overriding AR attribute reader
|
| | |
|
|/
|
|
| |
[ci skip]
|
|
|
|
|
|
|
|
|
| |
See 34321e4a433bb7eef48fd743286601403f8f7d82 for background on
ImmutableString vs String.
Our String type cannot delegate typecasting to ImmutableString, because
the latter freezes its input: duplicating the value after that gives us
an unfrozen result, but still mutates the originally passed object.
|
|\
| |
| |
| |
| | |
kamipo/fix_warning_extra_states_are_no_longer_copied
Fix `warning: extra states are no longer copied`
|
| |
| |
| |
| |
| |
| | |
`messages` has `default_proc` so calling `reject` causes the warning.
https://github.com/ruby/ruby/blob/v2_4_1/hash.c#L1335-L1337
|
|/
|
|
|
|
|
|
|
|
| |
```ruby
nil.respond_to?(:stringify_keys) # => false
```
```ruby
include ActiveModel::AttributeAssignment
Object.new.assign_attributes(nil) # => ArgumentError: When assigning attributes, you must pass a hash as an argument.
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before:
person.errors.keys # => []
person.errors.values # => []
person.errors[:name] # => []
person.errors.keys # => [:name]
person.errors.values # => [[]]
After:
person.errors.keys # => []
person.errors.values # => []
person.errors[:name] # => []
person.errors.keys # => []
person.errors.values # => []
Related to #23468
|
|\
| |
| |
| | |
Avoid converting integer as a string into float
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Use `inspect` in `type_cast_for_schema` for date/time and decimal values
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Currently dumping defaults on schema is inconsistent.
Before:
```ruby
create_table "defaults", force: :cascade do |t|
t.string "string_with_default", default: "Hello!"
t.date "date_with_default", default: '2014-06-05'
t.datetime "datetime_with_default", default: '2014-06-05 07:17:04'
t.time "time_with_default", default: '2000-01-01 07:17:04'
t.decimal "decimal_with_default", default: 1234567890
end
```
After:
```ruby
create_table "defaults", force: :cascade do |t|
t.string "string_with_default", default: "Hello!"
t.date "date_with_default", default: "2014-06-05"
t.datetime "datetime_with_default", default: "2014-06-05 07:17:04"
t.time "time_with_default", default: "2000-01-01 07:17:04"
t.decimal "decimal_with_default", default: "1234567890"
end
```
|
| | |
| | |
| | |
| | | |
https://github.com/ruby/bigdecimal/pull/55
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In Ruby 2.4, BigDecimal(), as used by the Decimal cast, was changed so
that it will raise ArgumentError when passed an invalid string, in order
to be more consistent with Integer(), Float(), etc. The other numeric
types use ex. to_i and to_f.
Unfortunately, we can't simply change BigDecimal() to to_d. String#to_d
raises errors like BigDecimal(), unlike all the other to_* methods (this
should probably be filed as a ruby bug).
Instead, this simulates the existing behaviour and the behaviour of the
other to_* methods by finding a numeric string at the start of the
passed in value, and parsing that using BigDecimal().
See also
https://bugs.ruby-lang.org/issues/10286
https://github.com/ruby/bigdecimal/commit/3081a627cebdc1fc119425c7a9f009dbb6bec8e8
|
| | | |
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This issue is only appear when you try to call `define_attribute_method`
and passing a symbol in Active Record. It does not appear in isolation
in Active Model itself.
Before this patch, when you run `User.define_attribute_method :foo`, you
will get:
NoMethodError: undefined method `unpack' for :foo:Symbol
from activerecord/lib/active_record/attribute_methods/read.rb:28:in `define_method_attribute'
from activerecord/lib/active_record/attribute_methods/primary_key.rb:61:in `define_method_attribute'
from activemodel/lib/active_model/attribute_methods.rb:292:in `block in define_attribute_method'
from activemodel/lib/active_model/attribute_methods.rb:285:in `each'
from activemodel/lib/active_model/attribute_methods.rb:285:in `define_attribute_method'
This patch contains both a fix in Active Model and a test in Active
Record for this error.
|
| |
| |
| |
| |
| |
| |
| | |
The `:doc:` was added in cdb9d7f but `NumericalityValidator` is already
`:nodoc:` class. `:doc:` is unneeded.
https://github.com/rails/rails/blob/master/activemodel/lib/active_model/validations/numericality.rb#L3
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
These files are not using `strip_heredoc`.
Closes #27976
|
| | |
|
| |
| |
| |
| |
| |
| | |
`ActiveModel::TestCase` is used only for the test of Active Model.
Also, it is a private API and can not be used in applications.
Therefore, it is not necessary to include it in lib.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Right now it behaves differently on JRuby:
```
--- expected
+++ actual
@@ -1 +1 @@
-#<BigDecimal:5f3c866c,'0.333333333333333333',18(20)>
+#<BigDecimal:16e0afab,'0.3333333333333333',16(20)>
```
My initial PR (https://github.com/rails/rails/pull/27324)
offered to let the precision to be decided by the platform and
change the test expection, but other contributors suggested
that we should change the default precision in Rails
to be consistent of all platforms.
The value (18) comes from the max default precision that comes
from casting Rational(1/3) to BigDecimal.
|
| | |
|
| |
| |
| |
| | |
Actually, private methods cannot be called with `self.`, so it's not just redundant, it's a bad habit in Ruby
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As pointed out by @matthewd this change makes ImmutableString aware
of MysqlString's existence whereas previously MysqlString was only
overriding public API.
cc @kamipo
This reverts commit e632c2fa4cb60072a778ce95c952a0fa95e5b074, reversing
changes made to 334a7dcf107cd3ff1697163d331d289d6d65dcd7.
|
| |
| |
| |
| |
| |
| | |
The only difference between `Type::ImmutableString` and its subclasses
is the representation of the casted booleans. Prefer extracting
`casted_true`/`casted_false` and override these by subclasses.
|
| |
| |
| |
| |
| |
| | |
Missed in 37d956f. Fixes #27524.
[ MSathieu & Kasper Timm Hansen ]
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
If a Error object was serialized in the database as YAML in the Rails
4.2 version, if we load in the Rails 5.0 version it will miss the
@details instance variable so methods like #clear and #add will start to
fail.
|
|\
| |
| |
| | |
Moved database-specific ActiveModel types into ActiveRecord
|