@9karamba

Как правильно составить связи в базе данных?

У меня есть много категорий и у каждой категории несколько подкатегорий, а в них товары.
Как правильно будет написать?
Так
class CreateTemplates < ActiveRecord::Migration[5.1]
  def change
    create_table :products do |t|
      t.string :name
      t.references :category, foreign_key: true, null: false
      t.references :main_category, foreign_key: true

      t.timestamps
    end
    add_index :products , [:main_category_id, :category_id]
  end
end


Или вот так
class CreateTemplates < ActiveRecord::Migration[5.1]
  def change
    create_table :products do |t|
      t.string :name
      t.references :category, foreign_key: true, null: false

      t.timestamps
    end
  end
end
  • Вопрос задан
  • 83 просмотра
Решения вопроса 2
zorar4ik
@zorar4ik
Full stack overflow
has_many_through.png

У категории есть много подкатегорий. У подкатегории есть много товаров.
С помощью has_many :through
Ответ написан
Категории с подкатегориями лучше сделать как указано в https://stackoverflow.com/a/14198034
class CreateCategories < ActiveRecord::Migration
  def self.up
    create_table :category do |t|
      t.string      :text
      t.references  :parent
      t.timestamps
    end
  end
end


class Category < ActiveRecord::Base
  has_many :subcategories, :class_name => "Category", :foreign_key => "parent_id", :dependent => :destroy
  belongs_to :parent_category, :class_name => "Category"
end
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы