has_unique_title.rb 502 B

1234567891011121314151617181920212223
  1. # requires scope "neighbors_of" to find translations in same scope
  2. class KnowledgeBase
  3. module HasUniqueTitle
  4. extend ActiveSupport::Concern
  5. included do
  6. validate :validate_title_uniqueness
  7. end
  8. private
  9. def validate_title_uniqueness
  10. return if self
  11. .class
  12. .where(kb_locale_id: kb_locale_id, title: title)
  13. .where.not(id: id)
  14. .neighbours_of(self)
  15. .none?
  16. errors.add(:title, 'is already used')
  17. end
  18. end
  19. end