Удаление элемента из массива в активной записи - PullRequest
0 голосов
/ 27 марта 2019

У меня есть объект, который выглядит следующим образом:

tv_info _id: 237827483784783, channels: [:a, :b, :c]

Как бы удалить :b из каналов, чтобы он выглядел как

tv_info _id: 237827483784783, channels: [:a, :c]

Я нашел толькометод обновления, но метод удаления отсутствует.Например,

tv_info.update(channels: :a)

изменит его на

tv_info _id: 237827483784783, channels: [:a]

, но мне нужно сохранить :c

Я ищу что-то вроде

tv_info.delete(channels: :b)

Ответы [ 3 ]

0 голосов
/ 27 марта 2019

Просто получите доступ к массиву, хранящемуся в каналах напрямую:

tv_info.tap { |hash| hash[:channels].delete(:b) }

Это использует:

  • tap, чтобы гарантировать, что весь измененный хэш будет возвращен
  • delete для удаления соответствующих элементов из массива.

Надеюсь, это поможет, дайте мне знать, если у вас есть какие-либо вопросы или проблемы.

0 голосов
/ 27 марта 2019

Вы можете удалить :b, используя:

tv_info[:channels].delete(:b)

Надеюсь, это поможет: D

0 голосов
/ 27 марта 2019

Вы пробовали что-нибудь вроде

new_channles = tv_info.channels.select { |c| c != :b }
tv_info.update(channels: new_channels)

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...