Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 每个用户的唯一约束_Elixir_Phoenix Framework_Ecto_Unique Constraint - Fatal编程技术网

Elixir 每个用户的唯一约束

Elixir 每个用户的唯一约束,elixir,phoenix-framework,ecto,unique-constraint,Elixir,Phoenix Framework,Ecto,Unique Constraint,考虑以下变更集: 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

考虑以下
变更集

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\u约束
(以及迁移中的
unique\u索引
)使
名称
字段在所有用户中都是唯一的

然而,实际上,我想让每个用户的
名称
字段都是唯一的-最好的方法是什么?

添加

create index(:decks, [:user_id, :name], unique: true)
添加到您的迁移文件中

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

转到您的迁移文件

谢谢!我认为
index
name
参数具有类型
atom
:可能应该提到
unique\u约束(:name)
将不再有效<代码>唯一约束(名称:decks\u user\u id\u name\u index)
如果没有提供自定义索引名称应该可以谢谢,我使用了
唯一约束(:name,[name::decks\u user\u id\u name\u index])
。谢谢!我认为
index
name
参数具有类型
atom
:可能应该提到
unique\u约束(:name)
将不再有效<代码>唯一约束(名称:decks\u user\u id\u name\u index)
如果没有提供自定义索引名称,应该可以。谢谢,我使用了
唯一约束(:name,[name::decks\u user\u id\u name\u index])