【发布时间】:2018-01-04 06:41:47
【问题描述】:
在尝试构建表单验证时,当我使用超过 20 个字符的用户名时,我的错误会显示在表单中,但当我什么都不输入时不会。我得到一个违反非空约束 Postgres.Error 视图。
# user.ex
def changeset(model, params \\ %{}) do
model
|> cast(params, ~w(name username), [])
|> validate_length(:username, min: 1, max: 20)
end
这可能是因为迁移:
def change do
create table(:users) do
add :name, :string
add :username, :string, null: false
add :password_hash, :string
timestamps
end
create unique_index(:users, [:username])
end
浏览 Programming Phoenix 的书,不幸的是这本书有点过时了,我找不到这个问题的快速解决方案。
Postgres 不应该在验证检查之前出现。关于如何消除此错误的任何想法?
【问题讨论】:
-
您是否尝试将
validate_required([:username, :other_fields])添加到您的变更集管道中?
标签: postgresql elixir phoenix-framework