Ruby on Rails – validation一个成本

validation用户的成本/价格input的最佳方式是什么,validation规则如下:

  • 允许的格式举例为.23,.2,1.23,0.25,5,6.3(小数点后最多两位数字)
  • 最小值为0.01
  • 最大值为9.99

检查价格并validation格式

#rails 3 validates :price, :format => { :with => /\A\d+(?:\.\d{0,2})?\z/ }, :numericality => {:greater_than => 0, :less_than => 10} #rails 2 validates_numericality_of :price, :greater_than => 0, :less_than => 10 validates_format_of :price, :with => /\A\d+(?:\.\d{0,2})?\z/ 

对于客户端validation,您可以使用像这样的jQuery插件,允许您为给定的input定义不同的有效格式。

对于服务器端的validation,根据这个问题/答案也许你应该使用一个decimal列的price ,其中你可以定义的precisionscale价值观, scale解决小数点后的两位数限制。

然后validation数字性,最小值和最大值,您可以使用下一个validation方法:

 validates_numericality_of :price, :greater_than => 0, :less_than => 10 

您可以构build自定义validation。例如,可以说第二种情况:

 validate :price_has_to_be_greater_than_minimum def price_has_to_be_greater_than_minimum errors.add(:price, "price has to be greater than 0.01") if !price.blank? and price > 0.01 end 

更多关于这个,在Rails指南中, 在这里 。