Ruby on rails 使用Ruby正则表达式验证数字
在Rails项目中工作时,需要我验证数字(表示一个月中的一天)为1或15。我在模型顶部放置了以下验证:Ruby on rails 使用Ruby正则表达式验证数字,ruby-on-rails,ruby,regex,validation,Ruby On Rails,Ruby,Regex,Validation,在Rails项目中工作时,需要我验证数字(表示一个月中的一天)为1或15。我在模型顶部放置了以下验证: validates :deposit_date, presence: true, format: { with: /\A1(5)?\z/ } 当我使用irb或在线测试程序时,正则表达式按预期工作,但在Rails应用程序中验证失败。数字是作为字符串传递的,所以我认为这不是类型问题 更新:谢谢你这么快就给出了所有相关的答案。我能够追踪到这个问题。。。数据库中的数据已经无效,导致单独保存!调用失败
validates :deposit_date, presence: true, format: { with: /\A1(5)?\z/ }
当我使用irb或在线测试程序时,正则表达式按预期工作,但在Rails应用程序中验证失败。数字是作为字符串传递的,所以我认为这不是类型问题
更新:谢谢你这么快就给出了所有相关的答案。我能够追踪到这个问题。。。数据库中的数据已经无效,导致单独保存!调用失败;) 试试这个
验证:存款日期,包含:{in:[1,15]}尝试删除5的捕获
{ with: /\A15?\z/ }
使用
\z
将匹配字符串的结尾。在您的情况下,您只需要匹配日期(字符串的开头) 您确定deposit\u date
是一个仅表示月份日期的字符串,而不是date
类型的类,或者至少是一个表示日期的字符串,例如'2014-03-24'
?这两个都与正则表达式不匹配。是的,它是数字1或15。。这些值来自HTML选择字段。
validates :deposit_date, presence: true, format: { with: /\A15?/ }