Hello Fellas,
I am trying to enforce uniquness in a table using to combined fields I originally followed this instructions Stackoverflow thread which seems to work for everybody apart from my self and I do not seem to get why.
So my migration code looks like this :
def change do
create table(:inventories) do
add :operation_account_id, references(:operation_accounts, on_delete: :nothing)
add :currency_id, references(:currencies, on_delete: :nothing)
timestamps()
end
create index(:inventories, [:operation_account_id])
create index(:inventories, [:currency_id])
create unique_index(:inventories, [:currency_id, :operation_account_id], name: :operation_currency_index)
end
and this is my changeset
@doc false
def changeset(inventory, attrs) do
inventory
|> cast(attrs, [:balance, :currency_id, :operation_account_id])
|> validate_required([:balance, :currency_id, :operation_account_id])
|> unique_constraint(:currency_per_account, name: :operation_currency_index)
end
The problem is that during testing when I try to insert two Inventory entries with same currency_id and operation_account_id it inserts them properly withour and exception or an error and I do not understand what I am missing.
Thanks a lot