2

我的应用程序中有祖先树。

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

让我解释

记录:

 #<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 级别的所有记录)

4

1 回答 1

6

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

validates_uniqueness_of :title, :scope => :ancestry

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

于 2013-10-21T09:00:31.520 回答