加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails模型验证跳过和订单

发布时间:2020-12-17 01:57:37 所属栏目:百科 来源:网络整理
导读:有什么办法可以让我的rails模型验证按特定顺序执行,如果不满足以前的验证,则跳过某些验证. 例如:我有2个输入字段start_date和end_date.我的模型中有两个验证方法 其中一个检查日期小于“12/31 /#{Date.today.year 1}” def end_date_in_range if self.end_d
有什么办法可以让我的rails模型验证按特定顺序执行,如果不满足以前的验证,则跳过某些验证.

例如:我有2个输入字段start_date和end_date.我的模型中有两个验证方法

其中一个检查日期小于“12/31 /#{Date.today.year 1}”

def end_date_in_range
    if self.end_date
      errors.add_to_base("Enter a date before #{Date.today.year + 1}") if self.end_date > Date.parse("12/31/#{Date.today.year + 1}")
    end
 end

我有另一个验证,它会逐步完成从开始日期到结束日期的日期

def
    (self.start_date.to_date .. self.end_date.to_date).inject(0) { |sum,n|  ... }
  end

现在,如果用户输入end_date(如12/31/20101),则第一次验证失败,但看起来要么继续检查下一次验证,要么先执行第二次验证,并且两种情况都会在处理此请求时挂起我的应用程序.我希望它检查第一次验证并将错误返回给用户,而不是逐步完成第二次验证中的日期.

谢谢,

解决方法

使用elsif

def end_date_in_range
    if self.end_date
      errors.add_to_base("Enter a date before #{Date.today.year + 1}") if self.end_date > Date.parse("12/31/#{Date.today.year + 1}")
    elsif  #second validation test

    end
 end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读