每个用户的唯一限制
Unique contraints per user
考虑以下 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
字段成为每个用户唯一的 - 最好的方法是什么?
添加
create index(:decks, [:user_id, :name], unique: true)
到您的迁移文件
考虑以下 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
字段成为每个用户唯一的 - 最好的方法是什么?
添加
create index(:decks, [:user_id, :name], unique: true)
到您的迁移文件