我有两种情况,当有人留空时,我不喜欢。
1)字段已通过presence: true
和format
验证进行验证:
validates :name, presence: true, format: { with: /\A[[:alnum:]]+\z/, message: 'can only have letters and numbers' }
问题是如果有人将name
留空,则会显示2个错误。我只希望"名称不能为空白"显示的错误信息,让名称只能包含字母和数字并不合理#34;输入任何内容时显示错误消息。
2)字段仅使用format
进行验证:
validates :name, format: { with: /\A[[:alnum:]]+\z/, message: 'can only have letters and numbers' }
在这种情况下,将字段留空是可以的。不幸的是,如果它实际上是空白的,用户将收到一条错误消息,因为它没有通过正则表达式。我知道我可以改变正则表达式以包含一个空字符串(至少我认为我可以通过前置|
)。我的正则表达式通常比[[:alnum:]]+
复杂得多,因此只需将+
更改为*
即可。
我的问题是,如果Rails有更好的方法来处理这两种情况吗?
答案 0 :(得分:2)
将allow_blank: true
添加到选项中。
validates :name, presence: true,
format: { allow_blank: true, with: /\A[[:alnum:]]+\z/, message: 'can only have letters and numbers' }