Has_many связь с конкретными значениями: как? - PullRequest
1 голос
/ 07 мая 2019

Я хочу создать (игрушечное / обучающее) приложение RoR для управления личной библиотекой настольных игр, но я застрял, когда пытаюсь определить правильную структуру данных. По сути, пользователь владеет библиотекой со многими играми. Для каждой игры пользователь определяет цену и рейтинг.

Итак, у меня есть простая модель для пользователя с атрибутом name:text и модель для игры с атрибутом title:text.

У меня также есть модель library, которая ссылается на модель user и имеет отношение один ко многим с games.

Теперь я не уверен, как определить атрибуты rating и price для игр в библиотеке.

Простая идея - определить report как таблицу соединений из библиотеки и игр с атрибутами rating и price, но я чувствую, что это решение настолько ... неуклюже.

Есть еще идеи?

1 Ответ

4 голосов
/ 07 мая 2019

Никаких неуклюжих.Действительно, это правильное решение.

Вам нужна связь «многие ко многим» между library и game, поскольку в библиотеке может быть много игр, а игра может быть во многих библиотеках.

Как вы сказали, создайте модель report, ссылающуюся на library и game плюс столбцы rating и price, затем определите has_many :through ассоциации:

class Report < ApplicationRecord
  belongs_to :library
  belongs_to :game
end

class Game < ApplicationRecord
  has_many :reports
  has_many :libraries, through: :reports
end

class Library < ApplicationRecord
  belongs_to :user
  has_many :reports
  has_many :games, through: :reports
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...