验证非模型字段

时间:2010-01-14 07:17:43

标签: ruby-on-rails

我在表单中添加了一个额外字段:

<%= select_tag :quantity, options_for_select(["Select a Value"].concat((1..10).to_a)) %>

它指定要创建的记录的副本数。

如何验证该字段的存在(或数字),因为它不是模型本身的一部分?

validates_presence_of :quantity 失败!!!

2 个答案:

答案 0 :(得分:14)

实测值。您可能希望在模型中添加虚拟属性。

.........

attr_accessor :not_on_db
.........

validates_presence_of     :not_on_db,
validates_length_of       :not_on_db,    :within => 1..5
.........

答案 1 :(得分:1)

使用validates_numericality_of验证。默认情况下,数值验证检查浮点类型,您需要告诉您想要查看整数。由于数量不会存储在db中,因此需要是虚拟的。

试试这个:

attr_accessor :quantity
validates_numericality_of :quantity, :only_integer => true

validates_numericality_of默认情况下不接受nil,您不需要检查属性是否存在,并且您可能想要更改视图中数量的范围,我不会在此验证它。

您要验证范围,将其声明为模型中的常量。在验证和视图中都参考此常量。