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

你怎么能看到两个模型都有一个用户名!我现在的问题是如何验证我的模型,以便用户名在管理员和用户中是唯一的!或者更好的说法是管理员模型和用户模型中没有用户名!谢谢

4

2 回答 2

3

我认为最好使用STI(单表继承)并在父模型中移动验证

于 2013-10-18T12:15:09.873 回答
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

但是您的数据模型不是最好的主意。考虑模型“用户”的新模型“用户角色”。这可以是“管理员”或“用户”。

于 2013-10-18T12:08:09.453 回答