Я использую драгоценный камень для создания подкатегорий. После этого, когда я создаю элемент (модель элемента), я использую следующую группу выбора, чтобы связать элемент с подкатегориями, которым он принадлежит. Выбор группы включает категории и подкатегории, сгруппированные вместе.
<%= form.input :category, collection: @categories, as: :grouped_select, group_method: :children, label: false, include_blank: true %>
@categories = Category.where(ancestry: nil).order('name ASC')
Также я использую камень cocoon , чтобы создать и таким образом связать множество подкатегорий с элементом.
Теперь я хотел бы добавить собственный метод validate
внутри модели, который позволит пользователю добавлять только подкатегории, принадлежащие к той же основной категории, или иначе возвращать ошибку:
errors.add(:category, "you can only choose subcategories from he same category")
Я застрял на том, как создать этот validate
метод. Может быть, сначала я должен найти подкатегории, которые добавляются:
subcategory = Category.find(category)
И затем найти категорию, к которой относится подкатегория:
subcategory.root.name
Но после этого у меня есть идея что делать.
Как я могу создать этот метод validate
, чтобы позволить пользователю добавлять только подкатегории, принадлежащие к той же основной категории, или иначе возвращать ошибку?
Заранее спасибо. Помощь будет очень цениться в этом.