2014-03-06 275 views
2

我的自定義驗證器出現問題。我有一個模型Price,它看起來像這樣:Rails 4自定義驗證

class Price < ActiveRecord::Base 
    belongs_to :car 
    validates :from_days, :to_days, :netto_price, presence: true, numericality: true 
    validate :days_range_validation 

    private 

    def days_range_validation 
    unless to_days > from_days 
     errors[:to_days] << I18n.t('price.must_be_greater') 
    end 
    end 
end 

而問題是,當我離開to_daysfrom_days空白在我的形式,我得到以下錯誤:

undefined method `>=' for nil:NilClass 

而且現在的目標是僅當from_daysto_days存在時才使用此驗證程序,但我不知道該怎麼做。有任何想法嗎?

回答

2

你應該設置:if選項:

validate :days_range_validation, :if => :days_ranges_present? 

# ... 
private 

def days_ranges_present? 
    to_days.present? && from_days.present? 
end 
+0

這是偉大的答案。 –

+0

@MateuszUrbański謝謝。你介意將答案標記爲接受嗎? –