Как перебрать Hash с несколькими значениями и использовать destroy? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть этот код:

a = {"type1"=>[11], "type2"=>[12], "type3"=>[13, 14]}

a.each do |i, k|
  record = Model.where(type: i, id: k)
  record.destroy if record
end

В 1-й итерации действие уничтожения прекрасно работает с:

Model.where(type: type1, id: 11)

Во 2-й итерации действие уничтожения прекрасно работает с:

Model.where(type: type2, id: 12)

В 3-й итерации уничтожить действие FAILS с помощью:

Model.where(type: type3, id: [13,14])

На 3-й итерации destroy завершится неудачно, потому что запрос возвращает две записи, а действие уничтожения завершится неудачей, поскольку оно отправит неверное количество аргументов (1 вместо 2).

Если я использую destroy_all, он будет работать для 3-й итерации, но потерпит неудачу для первых двух.

Как я могу исправить решение выше?

1 Ответ

0 голосов
/ 11 мая 2018

В таком случае вы можете использовать каждый

Model.where(type: i, id: k).each{|record| record.destroy}

Это будет работать, если ничего не найдено, поэтому нет необходимости проверять, есть ли оно, в одном случае и в нескольких.

Вы также можете попробовать delete_all

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