首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phoenix框架-自定义变更集验证

Phoenix框架-自定义变更集验证
EN

Stack Overflow用户
提问于 2016-02-08 02:08:43
回答 1查看 4.5K关注 0票数 15

我对phoenix和长生不老药真的很陌生,所以如果这些看起来像是简单的问题,我很抱歉。在我想把它贴在这里之前,我已经搜索过堆栈溢出和博客了。

我在一个模型中有两个字段,字段A:整数,字段B:整数。在对变更集进行验证时,我希望创建一个自定义验证,在创建新项时检查字段A是否大于字段B,如果是,则闪现一条错误消息,并将它们带回:new路由。如果我没有使用正确的术语,很抱歉。

所以我猜这现在变成了一个两部分的问题。首先,我是否应该通过创建自定义验证在我的模型中执行此操作,还是应该在控制器中执行此操作?第二,用phoenix写这篇文章最简单的方法是什么?

再次感谢。

EN

回答 1

Stack Overflow用户

发布于 2016-02-11 14:00:46

我必须做这件事,这花了我一点时间来弄清楚。我结束了为变更集编写自定义验证器的工作。

代码语言:javascript
复制
def changeset(model, params \\ :empty) do
  model
  |> cast(params, @required_fields, @optional_fields)
  |> validate_a_less_eq_b
end

defp validate_a_less_eq_b(changeset) do
  a = get_field(changeset, :a)
  b = get_field(changeset, :b)

  validate_a_less_eq_b(changeset, a, b)
end
defp validate_a_less_eq_b(changeset, a, b) when a > b do
  add_error(changeset, :max, "'A' cannot be more than 'B'")
end
defp validate_a_less_eq_b(changeset, _, _), do: changeset

当然,您可能希望使用常规验证器来确保a和b是有效的数字。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35257104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档