【发布时间】:2016-11-13 20:16:10
【问题描述】:
考虑具有以下字段的用户模型:
- 名字(必填)
- 姓氏(必填)
- 电子邮件(必填)
- 密码(必填)
- 电话(必填,大小:10 位)
- 地址(必填)
还有一个包含以下步骤的多步骤注册表单:
- 第一步,包含名字、姓氏和电子邮件字段
- 第二步,输入密码、电话和地址。
您将如何创建一个解决方案来验证每个步骤中的输入?
标准的 ActiveRecord 方法不起作用,因为它一次验证所有字段。
我已经为这个问题创建了一个解决方案,但结果却是一个复杂的代码,所以我正在寻找替代方案。
【问题讨论】:
-
Lambda 基于
step属性的条件?当然,您可能会发现有一些复杂的控制器代码。validates :first_name, presence: true, if: lambda { |user| user.step === 1 }。如果你找到了一个好的答案,Rails 社区很想知道 :) -
您是否需要一直拥有
User实例?您可以在此过程中构建一两个临时的非User模型,然后在完成后将它们转换为真正的User。总体逻辑相同,但验证的条件性将通过模型分离来处理,而不是User中的一堆复杂性。
标签: ruby-on-rails validation activerecord