Rails 2.3中的自定义唯一性验证

时间:2012-01-10 00:57:59

标签: ruby-on-rails ruby validation

我试图在Rails 2.3中编写验证。

我有两个字段,让我们称之为record_id和user_id。

record_id将同时关联user_id以及Name属性。

验证应检查用户创建新记录时是否已使用Name属性。如果user_id相同但是record_id不同,则当用户尝试输入非唯一名称时,应该引发错误。

如果record_id和user_id相同且用户尝试创建已在数据库中的名称,则应允许用户使用已在使用的名称。

我对Rails 2.3相当新,所以非常感谢任何指导。

2 个答案:

答案 0 :(得分:1)

那么......你想为每个用户允许多个名字,检查用户名是否有重复项?

validates_uniqueness_of :name, :scope => :user_id

答案 1 :(得分:0)

在数据库端的[:user_id,:name]上添加唯一索引。

validate_uniqueness会对性能造成严重影响 - 它会在任何记录上添加select创建或更新,实际上,并不能保证任何并发更新