我在我的用戶模型中進行了驗證,以避免用戶名中出現特殊字符和空格。模型驗證不適用於更新
順便說一下,我有大約10000個用戶已經註冊,其中一些用戶名中有空格。
這是我的驗證
validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" }
如何添加例外:更新,等更新驗證不解僱?
我在我的用戶模型中進行了驗證,以避免用戶名中出現特殊字符和空格。模型驗證不適用於更新
順便說一下,我有大約10000個用戶已經註冊,其中一些用戶名中有空格。
這是我的驗證
validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" }
如何添加例外:更新,等更新驗證不解僱?
使用validate: false
http://api.rubyonrails.org/classes/ActiveRecord/Validations.html#method-i-save
@user = User.find(1)
@user.username = 'something'
@user.save(validate: false)
如果您只創建,所以你可以做以下的確認工作:
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