Приложение My rails предназначено для организации заданий, содержащих вопросы.Определенные Назначения совместно используют Вопросы, поэтому вместо дублирования этих данных я выбрал третью таблицу с именем AssignmentQuestions, которая связывает Вопросы с Назначениями.
Таблица AssignmentQuestions также имеет столбец с именем «число».
В качестве примера: у меня может быть задание по химии и задание по биологии, которые содержат вопрос «Что вы считаете наиболее интересным в этом предмете?».В задании по химии это может быть вопрос 6, тогда как в задании по биологии это может быть вопрос 9. В этом случае мои таблицы (с соответствующими записями) будут выглядеть следующим образом:
Задания (идентификатор, имя)
Вопросы (id, content)
- 1, «Что вам больше всего нравится в этой теме?»
ЗаданиеВопросы (assignment_id, questions_id, number)
Эта настройка позволяет мнесвязать назначения с вопросами через 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, а не в самой таблице вопросов.
Я предполагаю, что я мог бы выполнить циклвсе связанные Вопросы и Задания и создайте свой собственный хэш объектов, который содержит как атрибут «контент», так и атрибут «номер».Тем не менее, я надеялся, что может быть лучший способ сделать это через саму ассоциацию, чтобы работа выполнялась в базе данных.
Можно ли как-нибудь присоединить столбец чисел к ассоциации вопросов, чтобыУ меня есть доступ к обоим?