Добавление данных столбца в отношение has_many through - PullRequest
0 голосов
/ 25 ноября 2018

Приложение My rails предназначено для организации заданий, содержащих вопросы.Определенные Назначения совместно используют Вопросы, поэтому вместо дублирования этих данных я выбрал третью таблицу с именем AssignmentQuestions, которая связывает Вопросы с Назначениями.

Таблица AssignmentQuestions также имеет столбец с именем «число».

В качестве примера: у меня может быть задание по химии и задание по биологии, которые содержат вопрос «Что вы считаете наиболее интересным в этом предмете?».В задании по химии это может быть вопрос 6, тогда как в задании по биологии это может быть вопрос 9. В этом случае мои таблицы (с соответствующими записями) будут выглядеть следующим образом:

Задания (идентификатор, имя)

  • 1, Химия
  • 2, Биология

Вопросы (id, content)

  • 1, «Что вам больше всего нравится в этой теме?»

ЗаданиеВопросы (assignment_id, questions_id, number)

  • 1, 1, 6
  • 2, 1, 9

Эта настройка позволяет мнесвязать назначения с вопросами через AssignmentQuestions следующим образом:

class Assignment < ApplicationRecord
  has_many :question_associations, class_name: "AssignmentQuestion"
  has_many :questions, through: :question_associations
end

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

>> Assignment.first.questions.first.content
=> "What do you find most interesting about this subject?"

Что я хочу, вв дополнение к этому, однако, есть возможность также получить доступ к номеру вопроса (уникальному для этого назначения) через аналогичное выражение вnsole:

>> Assignment.first.questions.first.number
=> 6

В настоящее время это невозможно, однако, поскольку столбец «число» находится в таблице AssignmentQuestions, а не в самой таблице вопросов.

Я предполагаю, что я мог бы выполнить циклвсе связанные Вопросы и Задания и создайте свой собственный хэш объектов, который содержит как атрибут «контент», так и атрибут «номер».Тем не менее, я надеялся, что может быть лучший способ сделать это через саму ассоциацию, чтобы работа выполнялась в базе данных.

Можно ли как-нибудь присоединить столбец чисел к ассоциации вопросов, чтобыУ меня есть доступ к обоим?

1 Ответ

0 голосов
/ 26 ноября 2018

Возможно, вы захотите получить первый вопрос_ассоциации из задания вместо первого вопроса: Assignment.first.question_associations.first.number.

Имеет больше смысла перебирать эту связь, если вам тоже нужны числа (например: Assignment.first.question_associations.order(number: :asc).includes(:question).each do |assoc| и у вас есть assoc.number и assoc.question внутри цикла, упорядоченного по номеру и предварительно загружая вопросы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...