用户可以在我的数据库中创建学生。现在我对first_name和last_name的存在进行了模型验证。我的学生模型中有一个full_name的方法。
def full_name
"#{first_name} #{last_name}"
end
我想知道我要做什么需要full_name的唯一性而不限制名字或姓氏。我想能够有汤姆史密斯,汤姆威尔逊,汤姆克兰西,但不是错误的汤姆史密斯再入。
答案 0 :(得分:3)
这样做
validates_uniqueness_of :first_name, scope: :last_name
您还需要在 学生 表格中添加 唯一索引 ,以避免 < em>竞争条件 。
add_index :students, [ :first_name, :last_name ], :unique => true
更多信息here。
答案 1 :(得分:0)
您可以尝试以下方法吗?
# student.rb
def full_name_uniqueness
if Student.exists?(first_name: first_name, last_name: last_name)
errors.add :base, "#{full_name} already exists" #change error key and message as you need
end
end
现在编写自定义验证 #student.rb
validates :full_name_uniqueness