我有一個Event
模型,它有一個start_date
和end_date
。我有一個簡單的驗證,以確保end_date
在start_date
之後,但是,當日期字段未更改時驗證仍然失敗,但另一個字段已更新。在這種情況下,即使在軌跡中,記錄顯示的是合適的字段值,但它解釋的字段爲零。Rails認爲領域是零當它不應該
# error
undefined method `<' for nil:NilClass
app/models/event.rb:32:in `end_after_start'
# validation in event.rb
attr_accessible :end_date, :start_date
validate :end_after_start
def end_after_start
if end_date < start_date
errors.add(:end_date, "must be after the start date")
end
end
# request parameters in trace
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"DD6rVimJxAJclO4IKfv69Txn8XkJZ4IpHZhh+cHOpg4=",
"event"=>{"name"=>"Birthday",
"start_date"=>"05/16/2013",
"end_date"=>"05/31/2013",
"commit"=>"Submit",
"id"=>"5"}
# _form
<%= f.text_field :start_date, :value => (@event.start_date.strftime("%m/%d/%Y") if @event.start_date.present?) %>
<%= f.text_field :end_date, :value => (@event.end_date.strftime("%m/%d/%Y") if @event.end_date.present?) %>
即使我看到end_date
和start_date
居住在跟蹤參數,如果我在end_after_start
添加驗證put start_date
(或END_DATE),它打印的零到控制檯。
控制器的外觀如何? –