Товар не сможет принадлежать нескольким подкатегориям если стоит связь has_many, belongs_to. У товара будет колонка category_id, которая будет указывать на родительскую модель. У category будет такой же main_category_id который будет указывать на родителя