Более простой способ добавить новое поле к объекту в Rails - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть поле в animal_food (объект json) с именем treats, и я хочу добавить поле в лакомствах с именем time_eaten, а затем вернуть все из поля лакомств.

 def addTime(time)
    animal_food["treats"]["time_eaten"] = time
    animal_food["treats"]
  end

Есть ли способ сделать код выше в 1 строку (используя слияние или другой синтаксис ruby?)

1 Ответ

2 голосов
/ 14 февраля 2020

Да:

animal_food['treats'].merge!({'time_eaten' => time})

делает то же самое, что и эти две строки. (Обратите внимание на восклицательный знак.) Вы также можете сказать

animal_food['treats'].tap { |treats| treats['time_eaten'] = time }

Или, в Ruby 2.7 превью, используя пронумерованные параметры:

animal_food['treats'].tap { @1['time_eaten'] = time }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...