Параллелизм с записью Postgres на конкретную таблицу в рельсах - PullRequest
0 голосов
/ 03 сентября 2018

Я использую рельсы на Postgres. У меня есть 2 таблицы, скажем, houses (имя: строка) и users (имя: строка), а user belongs_to house, у нас есть ключ unique для дома, поэтому у нас не будет двух домов с одинаковым именем.

когда кто-то хочет создать нового пользователя, он отправляет {user: Omer, house: red}, и на рельсах мы запустим следующий код

house = House.find_or_initialize_by(name: params[:house])
house.users.create(name: params[:user])

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

из моей схемы

t.index ["name"], name: "index_houses_on_name", unique: true, using: :btree

Я что-то упустил?

...