我有一個Rails 3應用程序(使用Mongodb和Mongoid,如果這有所作爲),並且在我的一個模型中,我有一個字段定義爲日期類型。在Rails 3中的日期驗證
class Participant
include Mongoid::Document
field :birth_date, :type => Date
end
我的控制器是採用蒙戈的find_or_initialize_by特點:
class ParticipantController
def create
@participant = Participant.find_or_initialize_by(params[:participant])
if @participant.save
redirect_to participants_path
else
render :new
end
end
end
這一切都歸結爲:我該怎麼辦日期驗證加載ActiveModel中與Mongoid和Rails 3?
我想確保在文本框中輸入「blah」在分配給我的模型的.birth_date
字段時不會引發異常。它應該提供一個很好的驗證錯誤消息,而不使用控制器來進行驗證。
這裏的基本要求:
的觀點必須是單個文本框。 沒有別的。這是一個用戶 要求,我們不能改變
驗證應在 模型來完成,而不是在控制器或
視圖(JavaScript或其他)沒有正則表達式格式驗證(他們不工作的權利/支持的語言環境等)
的問題是,從文本框中的值是validates_format_of之前分配給.birth_date
和validates_presence_of中運行。所以...
我該如何截取值的賦值,以便在賦值之前驗證它?是否有可能在模型中使用ActiveModel?或者這是否需要我將代碼放入控制器才能執行此操作?
你怎麼沒有在你的控制器中進行日期驗證?在你的模型中定義一個方法,如果日期無效,然後讓你的控制器使用像「raise」這樣的方法,則引發一個'ArgumentError'你沒有指定一個有效的日期「除非@ participant.date_is_valid' – Alex 2010-11-19 02:49:03
另外,你能提供一個有關「有效」日期的含義的更多細節?一個有效的RFC標準日期時間字符串?日期可以用許多不同的方式進行格式化。任何更多的信息將是有幫助的 – Alex 2010-11-19 03:02:12