ассоциация моделей для приложения интернет-магазина - PullRequest
0 голосов
/ 27 сентября 2011

Я занимаюсь разработкой приложения для интернет-магазина, используя ruby ​​на рельсах, и меня немного смущают ассоциации моделей. Это помогло бы мне, если бы кто-то мог дать мне представление о таблицах и их ассоциациях. Вот подробности:

Родительские таблицы: => Категории, случаи, Горящие предложения

Под категориями: => Мужчины, Женщины, Дети

Под мужчиной: => Рубашки, Брюки

под женщин: => Рубашки, Брюки, Юбки

под детьми: => Рубашки, Брюки

Под случаи => Этнические, Вечеринка, Путешествовать, Повседневная, Формальное

Под горячие предложения => Индекс горячих предложений

И, наконец, каждая последняя вложенная таблица будет иметь индекс продукта.

Спасибо!

1 Ответ

0 голосов
/ 27 сентября 2011

То, что вы обычно делаете с чем-то подобным, - это построение дерева таксономии, которое будет связано с продуктами, что позволит вам группировать продукты вместе.Соотношение «многие ко многим» между таксономией и продуктом позволяет связать продукт с несколькими группами, поэтому футболка может находиться в разделе «Категории»> «Мужчины»> «Рубашки» и «Повод»> «Повседневный».

# app/models/taxonomy.rb
class Taxonomy < ActiveRecord::Base
  has_many :taxonomies
  has_and_belongs_to_many :products
end

# app/models/product.rb
class Product < ActiveRecord::Base
  has_and_belongs_to_many :taxonomies
end

, а затем переходдля таблицы соединения между таксономией / продуктом

rails g migration create_products_taxonomies

и редактирования ее

def change
  create_table(:products_taxonomies, :id => false) do |t|
    t.references :product
    t.references :taxonomy
  end
end

Оттуда вы в основном создадите в базе данных 3 таксона, по 1 для каждого из ваших разделов, а затем создадитеТаксономия и построить подуровни.Когда вы создаете свои продукты, присвойте правильную Таксономию продукту и вашему набору.

Начальный файл может выглядеть следующим образом ...

Taxonomy.create!(:name => "Category").tap do |category|
  category.taxonomies.create!(:name => "Men").tap do |men|
    men.taxonomies.create!(:name => "Shirt")
    men.taxonomies.create!(:name => "Trousers")
  end
  # and so on for each category
end

Затем, когда вы создаете Продукт, вы можетесвяжите его с таксономией и используйте эту таксономию, чтобы вывести список продуктов, связанных с ней.

...