我有一个用于图书清单的模型,在我的表单中,我有一个供isbns使用的地方。我的模型验证是为了使用户只能输入数字和破折号。我想要它,以便如果他们将其留空,它仍然可以工作。
listing.rb
validates :isbn, format: { with: /\A[\d-]*\d[\d-]*\z/ }, :allow_nil => true
问题是,当您提交表单并将该空格留空时,会出现错误。
1 error prohibited this listing from being saved:
Isbn is invalid
为什么此验证不允许空白提交?
答案 0 :(得分:1)
nil
和空白不是一回事:如果您的表单正在提交一个空字符串,则该字符串不是nil,但也不符合声明的格式。如果要允许空白值,则需要:allow_blank
而不是:allow_nil
。