ruby-on-rails – 在救援中添加模型验证错误
发布时间:2020-12-17 03:51:21 所属栏目:百科 来源:网络整理
导读:我有以下带有虚拟属性的模型 class Mytimeperiod ActiveRecord::Base validates presence of :from_dt validates_format_of :from_dt,:with = /Ad{2}/d{2}/d{4}Z/,:message = "format is mm/dd/yyyy" def from_dt self.from_date.strftime("%m/%d/%Y"
我有以下带有虚拟属性的模型
class Mytimeperiod < ActiveRecord::Base validates presence of :from_dt validates_format_of :from_dt,:with => /Ad{2}/d{2}/d{4}Z/,:message => "format is mm/dd/yyyy" def from_dt self.from_date.strftime("%m/%d/%Y") if !self.from_date.blank? end def from_dt=(from_dt) self.from_date = Date.parse(from_dt) rescue self.errors.add_to_base("invalid from dt") end end 我正在使用<%= f.error_messages%>在窗体上显示错误消息. 我使用from_dt作为虚拟属性(字符串).表单上显示’存在’和’格式’验证错误,但是当用户在表单上输入无效的日期格式并且Date.Parse引发异常时,我在rescue子句中有’errors.add_to_base’语句.任何人都可以告诉我为什么当我禁用’格式’验证时,此错误不会出现在表单错误消息中. 谢谢. 解决方法
运行验证时,将删除在验证回调之外添加的错误 –
ActiveModel 因此,您必须在验证回调中添加错误,而不是在setter中添加.这应该工作: class Mytimeperiod < ActiveRecord::Base validates presence of :from_dt validates_format_of :from_dt,:message => "format is mm/dd/yyyy" validate :from_dt_must_parse def from_dt self.from_date.strftime("%m/%d/%Y") if !self.from_date.blank? end def from_dt=(from_dt) self.from_date = Date.parse(from_dt) rescue @from_dt_parse_error = "not recognizable as a date" end def from_dt_must_parse self.errors[:from_dt] = @from_dt_parse_error end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读