我有一个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