Налоги, как правило, зависят от региона, и поэтому налоговые ставки должны быть собственными. Нет прямой связи между налогами и продуктом, речь идет о связи между налоговой ставкой и местом доставки / выставления счета за товар.
Итак, я бы не стал устанавливать связь между продуктами и налогами. Я бы создал таблицу tax_rates, а затем определил метод для модели счета-фактуры (или для модели продукта, если вам необходимо уплатить налоги за продукт, что весьма вероятно), который рассчитывает окончательную цену. Что-то вроде:
О модели продукта ...
def calculate_final_price(tax_rate)
price*(1+tax_rate.tax_percentage)
end