Time.current.tap {| т | t.change hour: 10} не работает в Rails 4.2 - PullRequest
1 голос
/ 02 июля 2019

Я пытался

[107] pry(main)> t=Time.current
=> Tue, 02 Jul 2019 19:19:05 KST +09:00
[108] pry(main)> t.tap{|tt| tt.change hour: 10 }
=> Tue, 02 Jul 2019 19:19:05 KST +09:00
[109] pry(main)> t
=> Tue, 02 Jul 2019 19:19:05 KST +09:00

час не изменился ...

Я ожидаю

[110] pry(main)> t.tap{|tt| tt.change hour: 10 }
Tue, 02 Jul 2019 10:00:00 KST +09:00

Действительно я хочу

[111] pry(main)> Time.current.tap{|t| t.change(hour: 10, min: t.min)}
Tue, 02 Jul 2019 10:19:00 KST +09:00

1 Ответ

3 голосов
/ 02 июля 2019

change возвращает новый объект времени, поэтому это значение игнорируется tap.Вы можете использовать брата тапа, yield_self (ruby 2.5 +)

t.yield_self{|tt| tt.change hour: 10 }
...