Ассоциация трех столов - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть три таблицы, которые опираются друг на друга, чтобы получить правильные налоги для типа продукта.Ниже я опишу таблицы и их функции в деталях:

  • ProductType: Определяет тип продаваемого продукта.Он содержит информацию о продукте, такую ​​как: имя, размеры, вес, цена и т. Д.

  • Налоги: Определяет проценты налогов для каждого типа продукта для каждогопровинция будет продана.Он имеет много видов налогов.

  • Провинция: Определяет провинцию / штат, в который продается продукт.Он содержит информацию о провинции, такую ​​как аббревиатура, название, страна и т. Д. Он также используется для определения областей охвата других объектов (таблиц) и местоположения поставщиков, продавца и т. Д.

Мой вопрос: как мне структурировать это в БД, а также в моем проекте Ruby on Rails, поскольку налоги, которые я хочу получить, зависят не только от типа продукта, но и от провинции / штата?

Я не хочу иметь несколько записей одной провинции, по одной для каждого типа продукта или несколько записей одного типа продукта, по одной для каждой провинции или налогов.

Примечание: все тритаблицы имеют много-много отношений между собой.

1 Ответ

0 голосов
/ 19 февраля 2019
class ProductType
  has_many :taxes
end

class Tax
  belongs_to :product_type
  belongs_to :province
end

class Province
  has_many :taxes
end

При поиске налога для определенного типа продукта, сделайте что-то вроде:

ProductType.find(123).taxes.where(province: 'XYZ')
...