我有一个场不直接相关的字段在下面的对象一个Rails输入形式:我将其放入的ActiveRecord字段之前做一些计算。到目前为止没问题:我只是将计算放入控制器中。Rails的验证,不记录
我的问题是,计算可能会失败,我想报告给用户。我知道如何使用Flash警报来做到这一点,但是这并不会将错误与特定的表单输入字段相关联,并且与记录验证给出的错误不一致。我想要做的是告诉表单哪个输入字段失败了,为什么。
我可以找到的所有文档都使用ActiveRecord验证,但这太晚了:我无法创建ActiveRecord,因为我没有数据来填充它(即使我使用无效的虚拟数据填充它 - yech! - 我错过了验证时造成错误的细节。
那么什么是从控制器生成表单验证错误的Rails的方式(好吧,好吧,但我希望得到它的工作之前,我重构它到一个问题),而从模型验证?或者我该怎么做呢?
编辑: 这里是那种以为我试图做的一个例子。想象一下,一个车队经理处理成千上万的车辆,通过他们的注册号码(车牌)来识别。当车辆检查到司机时,没有意义提供包含数千个物品的下拉列表,因此用户输入注册号码。控制器查看(或更好地将其传递给模型以查找),它与车辆记录相匹配,并将车辆记录ID放入结帐中。如果用户输错数字,控制器/模型(可能)会发现该车辆没有条目。我知道要以与其他验证失败一致的方式告诉用户为什么保存失败。
您可以用虚拟属性。将它添加到表单中并将其验证 – Mandeep 2014-10-03 15:25:58
@Mandeep拥有正确的想法。这个逻辑不应该在控制器中,而应该在模型本身中。 – engineersmnky 2014-10-03 15:57:48