0
我的問題是,我的錯誤消息從不打印,我不認爲正在發生驗證。我從來沒有做過驗證,並且正在努力學習如何做到這一點。表單的自定義驗證方法
控制器:
def create
@requests = Request.new(request_params)
if @requests.save
redirect_to root_path
flash[:success] = "Your request has been submitted for approval"
else
render 'new'
end
end
請求模型
class Request < ApplicationRecord
validate :borrow_date_bigger_than_current_date, on: :create
def borrow_date_bigger_than_current_date
if (:borrow_date.to_s < Date.today.to_s)
errors.add(:borrow_date, "Checkout date cannot be earlier than the current date")
end
end
而且是這樣的
form_for @requests do |request|
<% if @requests.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@requests.errors.count, "error") %> prohibited this message from being saved:</h2>
<ul>
<% @requests.errors.full_messages.each do |msg| %>
<li>
<%= msg %>
</li>
<% end %>
</ul>
</div>
<% end %>
... form stuff below here ...
end
我正在爲borrow_date使用date_field。如果我嘗試比較它而沒有將其作爲字符串,則會出現此錯誤「符號與日期比較失敗」。實際上,我有另一個地方,我們將一堆案件與日期進行比較,然後將它們轉換爲字符串,並且它似乎正常工作。儘管我可能是錯的,但我仍然認爲這個方法沒有執行。謝謝你的回覆 – codingdraculasbrain
當然可以。順便說一下,你總是可以直接在它上面做一個關節,並在驗證中加上一個'put'語句,看看在控制檯中會發生什麼。然後你會知道它是否被調用。 – jvillian
只是給了一個嘗試。該方法未執行。 – codingdraculasbrain