我有两种模式:
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
如何看待两个模型都有用户名!我现在的问题是我如何能够模仿我的模型,以便用户名在管理员和用户中是唯一的!或者更好地说管理员模型和用户模型中没有用户名!感谢
答案 0 :(得分:3)
我认为最好使用STI(单表继承)并在父模型中移动验证
答案 1 :(得分: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
但是你的Datamodel不是最好的主意。想想“User”模型的新模型“Userrole”。这可以是“管理员”或“用户”。