Rails односторонняя ассоциация has_many - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь создать приложение на основе Rails (и я просто изучаю RoR по ходу дела), и я наткнулся на эту проблему.

Есть две модели: Рецепт и Предмет (продукты питания).Рецепт может иметь ноль (мы можем создать рецепт перед добавлением предметов) или много предметов.Но определенный продукт не должен быть привязан к какому-либо рецепту.Вот почему «has_many» и «own_to» не будут работать для меня, так как последний не удовлетворяет этому требованию.

Если бы я делал это без какой-либо основы, я бы, вероятно, поставил «элементы»столбец в таблице рецептов, который будет содержать список индексов элементов.Но я догадываюсь, что это не самый подходящий способ сделать это в RoR, поскольку в Rails есть ассоциации моделей.Пожалуйста, кто-нибудь может дать мне представление, как это сделать?

1 Ответ

0 голосов
/ 21 февраля 2019

Я обычно не использую has_and_belongs_to_many, но в вашем случае кажется, что он может подойти.Вы можете использовать его следующим образом:

class Recipe
  has_and_belongs_to_many :items
end

class Item
  has_and_belongs_to_many :recipes
end

Вы также можете использовать has_many: through, но вам придется создать третью таблицу, чтобы объединить таблицы рецептов и предметов.

class Recipe
  has_many :item_recipes
  has_many :items, through: :item_recipes
end

class ItemRecipes
  belongs_to :recipe
  belongs_to :item
end

class Item
  has_many :item_recipes
  has_many :recipes, through: :item_recipes
end

Вы можете найти больше информации здесь: Рельсовые ассоциации

...