Обновить массив в рельсах - PullRequest
0 голосов
/ 17 мая 2018

Я строю множество продуктов в рельсах. Который работает нормально, но мой вопрос ...

Есть ли способ обновить элемент, если он уже существует в массиве? Так как я перебираю продукты, а модель «TV-32D300B», мне нужно проверить массив, чтобы увидеть, существует ли он, но он может быть только частичным числом, таким как «TV-32D300» (минус последняя буква).

Если дело обстоит так, я хочу иметь возможность обновить этот продукт с правильными данными.

product = {
  name: product_name,
  url: product_url,
  modelnumber: product_modelnumber,
  category_id: category.id,
  group_id: category.group_id,
  image_url: image_url
}

Я использую include?, чтобы добавить продукты в массив, если продукт еще не существует, поэтому я предполагаю, что мне нужно добавить аналогичное условие, чтобы найти число.

unless products.include?(product)
  products << product
end

1 Ответ

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

Если предположить, что products - это массив хэшей, а то, что вы называете моделью, это product_name, хранящийся под ключом name в этом хэше, то будет сделано следующее:

existing = products.find { |p| product[:name].include? p[:name] }
if existing
  # update existing
else
  products << product
end

Подробнее о Enumerable#find.

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