2015-09-21 32 views
0

我想驗證我認爲相當簡單的事情。我有兩個time_select屬性「start_time」和「end_time」。我只是試圖在控制器中驗證用戶輸入的結束時間是否等於開始時間或開始時間之前。根本沒有日期。我在下面有一個驗證方法,但無論用戶輸入什麼內容,它都會出錯。驗證開始和結束時間屬性

相當新的鐵路,不禁感到我缺少一些小東西。這個驗證應該工作不應該嗎?

class Casenote < ActiveRecord::Base 
validate :end_must_be_after_start 

belongs_to :servicelog 
default_scope { order(:id) } 


private 

def end_must_be_after_start 
    if :start_time >= :end_time 
    errors.add(:end_time, "must be after start time") 
    end 
end 

end 

回答

1

你比較兩個符號:start_time:end_time。您需要比較start_timeend_time這兩個屬性。

def end_must_be_after_start 
    if start_time >= end_time 
    errors.add(:end_time, "must be after start time") 
    end 
end 
+0

看起來像我的另一個「結束」被截斷,它現在被添加爲清晰。 – NinjaBranDizzle

+0

我的印象是這些符號已經提交了值並驗證了它們。我怎樣才能提取這些提交的值並在模型中進行比較?模型是不正確的地方比較這些? – NinjaBranDizzle

+0

當創建模型對象時,這些值是該模型中的方法。如果你做了'model = Model.new(foo:bar,bar:foo)',爲了得到foo或bar的值,它應該是'model.foo' - > bar'model.bar' - > foo。所以,該模型是檢查這個問題的最佳地點。每次創建或保存模型時,都會運行驗證。 – nzajt

相關問題