0
を挿入しようとする制約エラーは、モデル内の口座番号フェニックスエクトユニーク検証:構造体
def change do
create unique_index(:users, [:account_number])
end
そして上で一意のインデックスを持つために、この移行を蘭:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:first_name, :last_name, :email, :phone, :city, :postal_code, :country, :login_count, :last_login, :active, :account_number, :password])
|> validate_required([:first_name, :last_name, :email, :phone, :city, :postal_code, :country, :account_number])
|> validate_length(:password, min: 8, max: 100)
|> validate_format(:email, ~r/@/)
|> unique_constraint(:email)
|> unique_constraint(:account_number)
|> put_pass_hash()
end
は、このエラーを生成します:
** (Ecto.ConstraintError) constraint error when attempting to insert struct:
* unique: users_account_number_index
If you would like to convert this constraint into an error, please
call unique_constraint/3 in your changeset and define the proper
constraint name. The changeset has not defined any constraint.
のPostgreSQL 9.6
フェニックス1.2.4
エクト2.1.4
何が欠けていますか?
への鍵
変更
|>unique_constraint(:account_number)
message
オプションを使用して、制約のエラーメッセージを追加し 'チェンジはどのconstraint.'は奇妙で定義されていません。この 'changeset'関数が' User'モデルにあり、あなたはこの関数から返されたチェンジセットを挿入していますか? – Dogbertそのすべてがokey-dokeyをコンパイルしましたか? –