【发布时间】:2016-11-15 15:24:23
【问题描述】:
我有一个包含field :owned_by_id, :string 的 Ecto 架构。我将该字段声明为字符串,因为我需要支持像“abc123”这样的值以及像“123”这样的值。
第二个参数是根据来自
data的类型信息转换的参数映射。
在我的模块中,我将changeset 定义为:
def changeset(struct, params \\ %{}) do
cast(struct, params, [:owned_by_id])
end
当我这样做时:
MyModule.changeset(%MyModule{}, %{owned_by_id: 1})
...我希望cast 会根据field 声明将owned_by_id 整数参数转换为字符串。
但是,我得到的是一个变更集,其中包括
errors: [owned_by_id: {"is invalid", [type: :string]}]
我可以自己打电话给Integer.to_string(1),但不应该cast 处理吗?有没有办法让它自动处理?
【问题讨论】: