У меня есть схема Ecto, которая включает field :owned_by_id, :string
. Я объявил поле строкой, потому что мне нужно поддерживать такие значения, как «abc123», а также такие значения, как «123».
В документах для cast / 3 говорится:
Второй аргумент - это карта параметров, которые приводятся в соответствии с информацией о типе из
data
.
В моем модуле я определяю changeset
как:
def changeset(struct, params \\ %{}) do
cast(struct, params, [:owned_by_id])
end
Когда я это сделаю:
MyModule.changeset(%MyModule{}, %{owned_by_id: 1})
... Я ожидал, что cast
превратит этот owned_by_id
целочисленный параметр в строку на основе объявления field
.
Однако вместо этого я получаю набор изменений, который включает
errors: [owned_by_id: {"is invalid", [type: :string]}]
Я мог бы позвонить Integer.to_string(1)
сам, но не должен cast
с этим справиться? Есть ли способ сделать так, чтобы он справился с этим автоматически?