1
私のPhoenixアプリケーションでは、オプションの整数値が負でないことを確認するために、変更セットの1つにを使用しようとしています。しかし、このメソッドを使用するとエラーが戻ってきます。何が間違っているのか分かりません。ここでPhoenix/Elixir - 整数のためのvalidate_format()が失敗しました
は私のスキーマとチェンジだ - :duration
がすでに整数として定義されているので、私はそれがマイナス記号が含まれていないことを確認することについては本当に唯一の心配:
embedded_schema do
field :content, :string
field :title, :string
field :duration, :integer
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:id, :content, :title, :duration])
|> validate_length(:title, max: 99, message: "Title must be less than 100 characters.")
|> validate_format(:duration, ~r/[^-]\d+/)
end
私は値を提出しようとした場合-1
の、例えば、これはエラーを返し:
** (FunctionClauseError) no function clause matching in Kernel.=~/2
(elixir) lib/kernel.ex:1629: Kernel.=~(-1, ~r/[^-]\d+/)
(ecto) lib/ecto/changeset.ex:1357: anonymous fn/5 in Ecto.Changeset.validate_format/4
を、同じエラーも、有効な値で生じます。
以前は文字列フィールドにを使用しましたが、うまくいきました。ここで間違っていることはわかりません。誰でもこの機能を処理する正しい方法を明確にすることはできますか?
あなたが整数を検証しようとしていると 'validate_format'が文字列のためであるためですか?あなたはvalidate_number、https://hexdocs.pm/ecto/Ecto.Changeset.html#validate_number/3を使用することができます –
ああもちろん私のゴシック。私はそれを完全に逃した。それを回答として投稿すれば、私は確かにそれを受け入れるだろう。 – skwidbreth