2015-07-21 4 views
1

Я пытаюсь запустить приложение основных рельсов, которое поможет захватить информацию о питании каждого пищевого продукта из списка продуктов питания. Информация о питании хранится на ингредиент и рассчитывается как сумма отдельных ингредиентов.Отношения со многими для многих

Вот то, что я до сих пор:

Есть две модели продуктов питания и ингредиентов. Каждая еда имеет много ингредиентов, и каждый ингредиент используется во многих пищевых продуктах. То, как я хочу это исправить, состоит в том, чтобы разбить «многие-ко-многим» со столом между «Рецептом», в котором есть pk Food и pk Ingredient. Но моя проблема в том, что у Рецепта может быть много ингредиентов, а у ингредиента есть много рецептов. Как мне разделить эти две таблицы на лучший способ, чтобы я мог захватить пищевой продукт и его список ингредиентов? Или есть лучший способ сделать все это?

Скажем в целях примера. Название имеет название, описание и ингредиент, имя, калории, питательные вещества.

ответ

2

Вы организовать как:

class Food < ActiveRecord::Base 
    has_many :recipes 
    has_many :ingredients, 
    through: :recipes 
end 

class Ingredient < ActiveRecord::Base 
    has_many :recipes 
    has_many :foods, 
    through: :recipes 
end 

class Recipe < ActiveRecord::Base 
    belongs_to :food 
    belongs_to :ingredient 
end 

Таким образом, вы можете хранить дополнительную информацию в Recipe

+0

Проблемы с этим сталкивается, что я не могу добавить новый рецепт, потому что рецепт может иметь много ингредиентов , Я все еще смущен тем, как я буду заполнять эту модель. – Raj

+0

Один рецепт имел бы 1 пищу и 1 ингредиент, он все еще много для многих, но с большим количеством полей – Nermin

+0

Как заполнить таблицу рецептов, например, куриного салата с курицей, салатом и помидорами в качестве ингредиентов? У меня было бы 3 входа, каждый из которых имел куриный салат из продуктов питания и ингредиенты от цыпленка до помидора? Эта таблица заселена автоматически со всеми возможными комбинациями ингредиентов и продуктов питания или она должна быть добавлена ​​вручную? – Raj

Смежные вопросы