Как реализовать на Ruby on Rails структуру категория, под категории, в под категориях категории товаров, ну и сами товары в категориях товаров?
Таблица "Категории"create_table :categories do |t|
  t.string  :name, null: false, unique: true
  t.integer :parent_id, index: true, foreign_key: true
end
В таблицу "Товары/Items" добавляешь:t.references :category, index: true, foreign_key: true, null: false
Модель "Категории":has_many :items, dependent: :destroy

has_many   :subcategories,   class_name: 'Category', foreign_key: :parent_id, dependent: :destroy
belongs_to :parent_category, class_name: 'Category', foreign_key: :parent_id

scope :parent_categories, -> { where(parent_id: nil) }
Модель "Товары"belongs_to :category# Что бы получить все основные категории
Category. parent_categories

# Получить подкатегории категории
Category.first.subcategories

# Получить товары категории
Category.first.items
"... как писать код?", - это тоже надо было дописать в конец вашего текста.
Ну а вообще, если серьезно, то в таблицу categories добавляете поле parent_id. По умолчанию равно нулю (нет родительской категории). Думаю, тут все понятно.
Ну а дальше has_many в модель Category и belongs_to в Product. Про них (с примерами) вы можете почитать тут: guides.rubyonrails.org/association_basics.html
И вообще...Как отображать все это во вьюхах?
Ну это вообще зашквар какой-то. Вам про циклы рассказывать или что?
Также будет полезно:
guides.rubyonrails.org/active_record_querying.html