Предотвратить дублирование в модели рельсов - PullRequest
0 голосов
/ 05 февраля 2019

Я получил хэш адресов.Я строю адреса с помощью вложенных атрибутов.Если адресный хэш дублирован (т. Е. Адрес1, почтовый индекс, страна, город), комбинация уже существует, тогда пропустите и перейдите к следующему хэшу адреса и создайте.Я хочу написать это в модели.Выборочная проверка остановит выполнение.Каков еще один вариант для достижения того же

1 Ответ

0 голосов
/ 05 февраля 2019
def insert_address_with_hash(hash)
  Address.create!(hash)
rescue ActiveRecord::RecordNotUnique => e
  puts 'Ignore dups'
end

и миграция (шаблон)

class AddUniqIndexOnAdresses < ActiveRecord::Migration
  def change
    add_index :addresses, [:address1, :zip, :country, :city], :unique => true
  end
end

Убедитесь, что в таблице нет уникальных строк, миграция не будет работать.

...