gpt4 book ai didi

ruby-on-rails - rails 模型验证跳过和排序

转载 作者:行者123 更新时间:2023-12-03 15:48:43 24 4
gpt4 key购买 nike

有什么方法可以让我的 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

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

谢谢,

最佳答案

使用 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

关于ruby-on-rails - rails 模型验证跳过和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com