2013-10-18 13 views
0

我有兩個型號:驗證,使相同的用戶名是不是在其他模型

class Admin < ActiveRecord::Base 
    has_secure_password 
    validates_presence_of :username 
    validates_uniqueness_of :username 
end 

class User < ActiveRecord::Base 
    has_secure_password 
    validates_presence_of :username 
    validates_uniqueness_of :username 
end 

你怎麼能看到這兩種模式有一個用戶名!我現在的問題是我如何評估我的模型,使用戶名在管理員和用戶中是唯一的!或者更好地說,沒有用戶名是在管理模型和用戶模型!由於

回答

1

您可以編寫自己的驗證這樣的:

def check_for_unique_name 
    if !User.find_by_name(username)==nil or !Admin.find_by_name(username)==nil 
    errors.add(:username, "already in use!") 
    end 
end 

然後通過驗證:

validate :check_for_unique_name 

但你的數據模型是不是最好的主意。爲模型「用戶」考慮一個新的模型「Userrole」。這可以是「管理員」或「用戶」。

+1

或'如果User.find_by_name(用戶名)|| Admin.find_by_name(用戶名)' –

3

我認爲這將更好地使用STI(單表繼承)和父模型移動驗證

相關問題