ActiveImport Postgresql Уникальность с нулевыми значениями - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующие поля: Profile_ID, CODE A, CODE B.

Все поля обязательны для заполнения. КОД B может быть нулевым, но не более одного раза для каждого КОДА А.

Например.

VALID -> ID профиля = 1 | Код A = X | Код B = NULL

НЕ ДЕЙСТВИТЕЛЬНО -> ID профиля = 1 | Код А = Х | Код B = NULL

Если найдены дубликаты, их можно игнорировать. Проблема в том, что Postgres не может различить guish нулевое значение для уникальности. Как я могу решить? Мне нужно использовать метод массового импорта ( ActiveRecord-import ), потому что нужно вставить много записей. Поэтому я не могу использовать find_or_create_by ()

ActiveImport (POSTGRES)

Item.import records, on_duplicate_key_update: {
   conflict_target: [:profile_id, :code_a, :code_b],
   columns: [:price]
}

Модель

class Item < ApplicationRecord
  belongs_to :profile, touch: true
  validates :code_a, presence: true
  validates_uniqueness_of :code_b,  scope: [:profile_id, :code_a]
...