ユーザーが多くの在庫を持つ在庫システムがあります。ユーザーごとに連続する必要があるバーコード列があります。
例えば:
インベントリ テーブル:
id | user_id | barcode
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 2
5 | 1 | 3
私が持っている在庫モデルでは
before_validation :assign_barcode, on: :create
def assign_barcode
self.barcode = (user.inventories.order(barcode: :desc).first.try(:barcode) || 0) + 1
end
通常は機能しますが、データベースをシードするときに問題が発生しました。
(1..5).each do
user.inventories.build(...)
end
user.save
user
同じバーコードを持つ在庫がたくさんあることになります。在庫を一括追加する場合でも、在庫に固有のバーコードがあることを確認するにはどうすればよいですか?