Rails:attr_accessor上的validates_numericality_of未按预期工作

时间:2013-05-27 19:45:34

标签: ruby-on-rails

我正在使用rails 3.1。我有一个这样的模型产品:

class Product < ActiveRecord::Base
  attr_accessor :output_unit
  ...
  validates_numericality_of :output_unit, greater_than_or_equal_to => 0, :on => update
  ...
end

当我尝试更新产品并在此字段中引入数字时,表单消息显示“输出单位不是数字”。

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以编写方法output_unit_before_type_cast并返回self.output_unit,试试这个:

 attr_accessor :output_unit

 validates_numericality_of :output_unit, :only_integer => true, greater_than_or_equal_to => 0, :on => update

 def output_unit_before_type_cast
    self.output_unit
 end

或者

 attr_accessor :output_unit
 validates :output_unit, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0, :on => update }

 def output_unit_before_type_cast
    self.output_unit
 end