我在我的用户模型中进行了验证,以避免用户名中的特殊字符和空格。
顺便提一下,我已经注册了大约10000个用户,其中一些用户名中有空格。
这是我的验证
validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" }
如何为:update添加例外,那么不会触发更新验证吗?
答案 0 :(得分:2)
如果您的验证仅适用于创建,那么您可以执行以下操作:
validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" }, on: :create
如果此对象不是新记录,则跳过验证:
validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" }, if: :new_record_object?
def new_record_object?
self.new_record?
end
或者您可以在保存任何对象之前使用以下代码:
@user.save(validation: false)
您可以阅读有关skipping validations
的更多信息答案 1 :(得分:0)
使用validate: false
http://api.rubyonrails.org/classes/ActiveRecord/Validations.html#method-i-save
@user = User.find(1)
@user.username = 'something'
@user.save(validate: false)