如何在Ecto模型(或Elixir结构)上实现setter

如何在Ecto模型(或Elixir结构)上实现setter,elixir,ecto,Elixir,Ecto,我来自Rails思维模式,习惯于在ActiveRecord模型中添加大量setter,以修剪/小写字符串(例如电子邮件地址)或规范化电话号码以使用“-”作为分隔符。我喜欢setter方法,因为它使修改记录的代码保持干燥。这可能与长生不老药/异位剂有关吗?目前,没有任何机制。您最好创建一个函数,如: User.normalize(%User{}, conn.params["user"]) 现在,我们正计划将此代码移动到自定义类型。例如,您实现了一个电子邮件类型,它知道如何正确地强制转换和规范化数

我来自Rails思维模式,习惯于在ActiveRecord模型中添加大量setter,以修剪/小写字符串(例如电子邮件地址)或规范化电话号码以使用“-”作为分隔符。我喜欢setter方法,因为它使修改记录的代码保持干燥。这可能与长生不老药/异位剂有关吗?

目前,没有任何机制。您最好创建一个函数,如:

User.normalize(%User{}, conn.params["user"])

现在,我们正计划将此代码移动到自定义类型。例如,您实现了一个电子邮件类型,它知道如何正确地强制转换和规范化数据,强制转换可用于Ecto查询和分配字段值。

自定义类型将非常酷,我还将研究如何创建自己的Repo crud函数。我们今天将推出v0.5.0,它将包括自定义类型!通过测试文件更改集文档:经典的全名到名字和姓氏设置器怎么样?我不认为自定义类型可以处理它,是吗?