2016-02-13 53 views
1

因此,目前validatable驗證電子郵件和密碼的存在。它也可以驗證電子郵件格式。但是,我的user模型不僅僅需要電子郵件和密碼。我還需要第一個,最後一個和用戶名。所以,爲了讓我來驗證這些屬性我必須使用軌道的存在確認出現圖所示:爲設計添加額外的驗證validatable

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    validates :first_name, presence: true 
    validates :last_name, presence: true 
    validates :user_name, presence: true 

end 

我想知道是否有辦法先過去和用戶名添加到可驗證的行動。我檢查了devise.rb文件,發現了password_length和email_regexp的validatable配置,但並不完全知道如何將其他屬性添加到validatable函數中。顯然這並不是什麼大問題,但是在我的用戶模型中清理代碼會很好。謝謝你對我的問題的任何迴應。

回答

3

雖然你可能在運行時潛在地monkeypatch Devise::Models::Validatable這將是相當愚蠢的。它將需要5倍以上的代碼,並有可能中斷升級。

該模塊的重點在於爲模型提供設計開箱即用所需的基本驗證。

您要添加的內容是特定於您的應用程序的驗證。因此它屬於您的應用程序 - 不要試圖將其重新放回庫中。

而是可以清理你的模型:

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    validates_presence_of :first_name, :last_name, user_name 
end 
+0

這是一個有益的和有見地的答案。感謝您花時間@max提供一些見解。 – Nappstir