私はfield :owned_by_id, :string
を含むEctoスキーマを持っています。私は "abc123"のような値と "123"のような値をサポートする必要があるので、フィールドを文字列として宣言しました。なぜEctoの `cast`は整数を文字列に変換しないのですか?
docs for cast/3は言う:
2番目の引数は
data
から種別情報に基づいてキャストされているのparamsのマップです。私はこれを行うとdef changeset(struct, params \\ %{}) do cast(struct, params, [:owned_by_id]) end
:
MyModule.changeset(%MyModule{}, %{owned_by_id: 1})
...私は文字列にその
私のモジュールでowned_by_id
整数のparamをオンにするcast
を期待
、私はchangeset
のように定義します、field
宣言に基づいています。
しかし、私が代わりに取得することは
errors: [owned_by_id: {"is invalid", [type: :string]}]
を含んチェンジである私はInteger.to_string(1)
自分自身を呼び出すことができますが、cast
はそれを扱うべきではないのですか?これを自動的に処理する方法はありますか?
バグのような感じです。 –