Rails在级别上验证唯一性

时间:2013-10-21 08:54:32

标签: ruby-on-rails ancestry

我的应用中有祖先树。

我想仅在同一级别上实现记录的唯一性。

让我解释一下

记录:

 #<Folder id: 1, title: "folder1", ... ancestry: nil>,
 #<Folder id: 2, title: "folder2", ... ancestry: "1">,
 #<Folder id: 3, title: "folder3", ... ancestry: "1/2">

如果我想创建folder (:title => 'folder2', :ancestry => '1'),则应该引发错误title is olready taken

但是如果我创建folder (:title => 'folder2', :ancestry => nil or "1/2"),它应该创建新记录。

可能有人有这个问题,可以给出建议或回答

(在祖先方法@ elem.siblings中返回@elem级别的所有记录)

1 个答案:

答案 0 :(得分:6)

唯一性验证器可以接受scope参数:

validates_uniqueness_of :title, :scope => :ancestry

现在它将验证该标题在具有相同祖先值的记录中是唯一的。