我通过Category
gem获得了具有树结构的ancestry
模型。
我希望兄弟姐妹拥有独特的名字,例如:
Books:
Science
science (not valid)
但是
Books:
Science
Children:
Science (valid)
如何设置此验证?
答案 0 :(得分:2)
您可以在定义范围的情况下使用Rails validate uniqueness。
例如,假设您有一个名为parent_id
的列,那么您的验证将如下所示
validates :name, uniqueness: { scope: :parent_id }
答案 1 :(得分:0)
您可以使用ActiveRecord validate
编写自己的验证程序,以检查父记录的子项,如:
class Category < ApplicationRecord
has_ancestry
validate :children_name_is_unique
def children_name_is_unique
return unless parent.try(:has_children?)
if Category.where(id: parent.child_ids, name: name).exists?
errors.add(:name, 'Duplicate children name')
end
end
end