每个用户的唯一约束

时间:2018-11-05 11:53:12

标签: elixir phoenix-framework ecto unique-constraint

请考虑以下changeset

defmodule Flashcards.Cards.Deck do
  use Ecto.Schema
  import Ecto.Changeset


  schema "decks" do
    field :name, :string
    field :user_id, :id

    timestamps()
  end

  @doc false
  def changeset(deck, attrs) do
    deck
    |> cast(attrs, [:name, :user_id])
    |> validate_required([:name])
    |> unique_constraint(:name)
  end
end

unique_constraint(以及迁移中的unique_index)使name字段在所有用户中唯一。。

但是,实际上,我想让name字段唯一的每个用户-做到这一点的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

添加

create index(:decks, [:user_id, :name], unique: true)

到您的迁移文件