我的应用中有祖先树。
我想仅在同一级别上实现记录的唯一性。
让我解释一下
记录:
#<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级别的所有记录)
答案 0 :(得分:6)
唯一性验证器可以接受scope
参数:
validates_uniqueness_of :title, :scope => :ancestry
现在它将验证该标题在具有相同祖先值的记录中是唯一的。