Несколько дней назад я начал использовать Elixir и Phoenix Framework (v 0.12.0) с базой данных Postgres. Я пытаюсь создать таблицу с первичным ключом UUID, который я предпочитаю по последовательному по умолчанию.
После использования mix phoenix.gen.html для создания файлов модели и миграции и последующих действий в документах Phoenix я изменил
def model do
quote do
use Ecto.Model
end
end
в web.ex до
def model do
quote do
use Ecto.Model
@primary_key {:id, :uuid, []}
@foreign_key_type :uuid
end
end
как указано в документах Ecto. Я также изменил миграцию на
create table(:tblname, primary_key: false) do
add :id, :uuid, primary_key: true
[other columns]
end
К сожалению, когда я пытаюсь добавить запись в таблицу из автоматически сгенерированной формы, я получаю сообщение об ошибке, потому что id имеет значение null. Если я вручную добавлю id -column в модель, я получаю сообщение о том, что столбец уже существует. Если я пренебрег установкой primary_key на false в table/2 и удалит столбец id, таблица будет создана с последовательным id -column.
Нужно ли вручную установить id в наборе изменений или я сделал ошибку при настройке моего приложения для использования UUID? Спасибо заранее