Elixir 使用EXTO变更集删除尾随和前导空格
在将Elixir 使用EXTO变更集删除尾随和前导空格,elixir,ecto,Elixir,Ecto,在将Changeset/2插入数据库之前,在调用Changeset/2时,是否有一种内置的方法可以删除exto.Changeset中字段的尾随空格和前导空格 目前,我正在向模式中添加两个自定义函数,用于数据过滤,以提高数据完整性: defp trim_fields(changeset, fields) do Enum.reduce(fields, changeset, &trim(&2, &1)) end defp trim(changeset, field) d
Changeset/2
插入数据库之前,在调用Changeset/2
时,是否有一种内置的方法可以删除exto.Changeset
中字段的尾随空格和前导空格
目前,我正在向模式中添加两个自定义函数,用于数据过滤,以提高数据完整性:
defp trim_fields(changeset, fields) do
Enum.reduce(fields, changeset, &trim(&2, &1))
end
defp trim(changeset, field) do
if get_change(changeset, field) do
update_change(changeset, field, &String.trim/1)
else
changeset
end
end
然后,该功能可以通过管道传输到变更集/2
功能中,例如:
def changeset(%Customer{} = customer, attrs) do
|> cast(attrs, [:first_name, :last_name])
|> validate_required([:first_name], [:last_name])
|> trim_fields([:first_name, :last_name])
end
因为我认为这是一个常见的用例,所以我想知道是否有一个函数已经提供了这个功能
如果此功能尚未在Ecto中提供,那么从Ectos API的角度来看,添加此类功能并将其命名为
filter\u trim
和filter\u…
,我想?我认为最好在运行验证之前修剪输入。此外,update\u change
仅在给定密钥发生更改时执行更改
这将导致稍微简化的代码:
changeset
|> cast(attrs, [:first_name, :last_name])
|> update_change(:first_name, &String.trim/1)
|> update_change(:last_name, &String.trim/1)
|> validate_required([:first_name, :last_name])
我忽略了一个事实,
update\u change
仅在给定键发生更改时执行给定函数。谢谢