Какая ассоциация активной модели Rails?

Пытаюсь понять некоторые стратегии ассоциации ActiveModel.

Вот что я пытаюсь сделать:

  1. Quiz принадлежит Lesson
  2. User может пройти тест (он им не принадлежит)
  3. Оценка викторины сохраняется и принадлежит пользователю

Итак, я считаю, что мне понадобится таблица типа through, например user_quiz_scores, которая предоставит мне информацию для отслеживания со следующими столбцами:

  • quiz_id
  • ID пользователя
  • user_quiz_score

Предполагая, что этот мыслительный процесс пока верен, модели будут выглядеть примерно так:

class Lesson < ApplicationRecord
  has_one :quiz
end

class Quiz < ApplicationRecord
  belongs_to :lesson
end

class Score < ApplicationRecord
  has_many ??????
end

class User < ApplicationRecord
  has_many :scores
end

Модель/таблица Score - это действительно то, что мне трудно понять. Может быть, я слишком усложнил это? Любая помощь/совет приветствуется!


person Godzilla74    schedule 27.02.2019    source источник


Ответы (1)


На беглый взгляд кажется, что это будет что-то вроде:

class Lesson < ApplicationRecord
  has_one :quiz
end

class Quiz < ApplicationRecord
  belongs_to :lesson
  has_many :scores
  has_many :users, through: :scores
end

class Score < ApplicationRecord
  belongs_to :user
  belongs_to :quiz
end

class User < ApplicationRecord
  has_many :scores
  has_many :quizzes, through: :scores
end
person jvillian    schedule 27.02.2019
comment
В качестве дополнительного предложения, Quiz has_many :users, through: :scores. - person MrYoshiji; 28.02.2019
comment
Спасибо, парни! Посмотрев на ваше предложение, перечитав документы, теперь это имеет смысл! - person Godzilla74; 28.02.2019