2014-09-01 107 views
0

我在我的用戶模型中進行了驗證,以避免用戶名中出現特殊字符和空格。模型驗證不適用於更新

順便說一下,我有大約10000個用戶已經註冊,其中一些用戶名中有空格。

這是我的驗證

validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/, message: "Non puoi avere spazi o caratteri strani nel tuo username" } 

如何添加例外:更新,等更新驗證不解僱?

回答

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