如何在Phoenix框架中验证存在?

时间:2015-08-16 05:07:08

标签: elixir phoenix-framework

Ecto可以验证格式,包含,唯一性等,但我看不出如何验证状态?是否有一种方法可以在字段为空时向字段添加错误?像RoR中的validates_presence_of一样?我可以手动创建它,这不是问题,但我想知道是否有一个已经存在的方法,如validate_presence\3或其他什么?

1 个答案:

答案 0 :(得分:3)

只需在模型中使用 required_fields 注释器。

@required_fields ~w(name email)

对于总共包含4个字段和2个必填字段的Customer模型,如下所示:

defmodule HelloPhoenix.Customer do
  use HelloPhoenix.Web, :model

  schema "customers" do
    field :name, :string
    field :email, :string
    field :bio, :string
    field :number_of_pets, :integer

    timestamps
  end

  @required_fields ~w(name email)
  @optional_fields ~w()

  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
  end
end

Phoenix将自动验证所需字段的存在,并在表单顶部显示错误消息,如下所示:

enter image description here