Отслеживать количество новых и обновленных записей отдельно - PullRequest
0 голосов
/ 22 октября 2018

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

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

Метод, который я сейчас использую, заключается в простом создании событий с соответствующими идентификаторами продуктов, которые отвечают условной записи save, которую я затем считаю и показываю после завершения импорта.

if product.save
  product.events.new(payload: 'save')
end

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

Существуют ли лучшие методы, которые более подходят для подсчета продуктовсохраняются при разграничении между его обновленным или новым?

TDLR;Импорт продуктов в активную запись (1 работа на продукт) из таблицы Excel.Каковы лучшие методы / методы для учета новых и обновленных записей отдельно для каждого импорта.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

У вас есть несколько вариантов здесь:

Простой вариант, согласно моему комментарию, заключается в простой проверке столбцов created_at и updated_at после сохранения записи.Если они равны, это новая запись, если нет, это означает, что запись уже существовала и была обновлена.У вас будет что-то вроде этого:

if product.created_at == product.updated_at
   new_product_count += 1
else
  updated_product_count += 1
end

Однако, возможно, есть лучшие способы сделать это.Просто в качестве примера: если я правильно понимаю, вы отслеживаете количество сохраненных продуктов, создавая новое событие «сохранить».Вместо этого вы можете иметь два типа событий: created и updated.(Это дает дополнительное преимущество, позволяя подсчитывать, сколько раз продукт обновлялся с момента его создания)

0 голосов
/ 22 октября 2018

Я не знаю, может ли это вам помочь, но в этих случаях я использую persisted? метод.

person = Person.new(id: 1, name: 'bob')
person.persisted? # => false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...