mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #29651 from Sayanc93/return-correct-date
Return correct date in ActiveModel for time to date conversions
This commit is contained in:
commit
4ea067017a
3 changed files with 30 additions and 2 deletions
|
@ -1,4 +1,21 @@
|
||||||
* Fix year value when casting a multiparameter time hash
|
* Fix date value when casting a multiparameter date hash to not convert
|
||||||
|
from Gregorian date to Julian date.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
|
||||||
|
=> #<Day id: nil, day: "0001-01-03", created_at: nil, updated_at: nil>
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
Day.new({"day(1i)"=>"1", "day(2i)"=>"1", "day(3i)"=>"1"})
|
||||||
|
=> #<Day id: nil, day: "0001-01-01", created_at: nil, updated_at: nil>
|
||||||
|
|
||||||
|
Fixes #28521.
|
||||||
|
|
||||||
|
*Sayan Chakraborty*
|
||||||
|
|
||||||
|
* Fix year value when casting a multiparameter time hash.
|
||||||
|
|
||||||
When assigning a hash to a time attribute that's missing a year component
|
When assigning a hash to a time attribute that's missing a year component
|
||||||
(e.g. a `time_select` with `:ignore_date` set to `true`) then the year
|
(e.g. a `time_select` with `:ignore_date` set to `true`) then the year
|
||||||
|
|
|
@ -46,7 +46,7 @@ module ActiveModel
|
||||||
|
|
||||||
def value_from_multiparameter_assignment(*)
|
def value_from_multiparameter_assignment(*)
|
||||||
time = super
|
time = super
|
||||||
time && time.to_date
|
time && new_date(time.year, time.mon, time.mday)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,17 @@ module ActiveModel
|
||||||
assert_equal date_string, type.cast(date_string).strftime("%F")
|
assert_equal date_string, type.cast(date_string).strftime("%F")
|
||||||
assert_equal date_string, type.cast(values_hash).strftime("%F")
|
assert_equal date_string, type.cast(values_hash).strftime("%F")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_returns_correct_year
|
||||||
|
type = Type::Date.new
|
||||||
|
|
||||||
|
time = ::Time.utc(1, 1, 1)
|
||||||
|
date = ::Date.new(time.year, time.mon, time.mday)
|
||||||
|
|
||||||
|
values_hash_for_multiparameter_assignment = { 1 => 1, 2 => 1, 3 => 1 }
|
||||||
|
|
||||||
|
assert_equal date, type.cast(values_hash_for_multiparameter_assignment)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue