2016-02-01 76 views
-3

我想在我的两列上的整数输入上设置一个范围。我有;Ruby中validates_numericality_of不起作用

def change 
    add_column :stores, :min_order_time, :integer, default: 0 
    add_column :stores, :max_order_time, :integer, default: 60 
    validate :min_order_time, :greater_than_or_equal_to 0 
    validate :max_order_time, :greater_than_or_equal_to 30 
end 

我得到; 未定义的方法'验证'

我切换到validate方法并开始使用:greater_than_or_equal_to,因为这不起作用;

add_column :stores, :min_order_time, :integer, default: 0 
add_column :stores, :max_order_time, :integer, default: 60 

validates_numericality_of :min_order_time, :in => 0..20 
validates_numericality_of :max_order_time, :in => 30..90 

我得到的错误是

undefined method `validates_numericality_of' for #.... 

我使用Ruby V2.2.0所以这validates_numericality_of应该是有效的,对不对?

我已经在模型中包含了这个好的度量,但没有帮助;

include ActiveModel::Validations 
+0

你得到它的工作? –

+0

是的。感觉有点愚蠢,我没有把它放在模型中。我对Ruby很新。 – mikelovelyuk

+0

每个人都有时间开始:) –

回答

3

验证应放入模型中,而不是迁移:

class Store 
    validates_numericality_of :min_order_time, in: 0..20 
    validates_numericality_of :max_order_time, in: 30..90 
end 

你真正想要的是inclusion

validates_inclusion_of :min_order_time, in: 0..20