0

У меня есть сложные отношения, с которыми мне трудно представлять в представлениях. Мне нужна помощь в выяснении наилучшего способа установления отношений, и это, вероятно, решит большую часть моей проблемы.имеет и принадлежит многим через

У меня есть схема здесь: Diagram

В принципе я пытаюсь создать динамический тип обследования применения. Администратор может пойти и добавить вопрос и вопрос. Когда пользователь входит в систему, они могут ответить на эти вопросы. Они могут выбирать только один ответ на вопрос, но будет раздел, где они могут выбрать любые ответы, которые они согласятся с «совпадением». Это будет использоваться для соответствия пользователям.

Например:

Вопрос:

Ваш любимый цвет? A) Красный B) Желтый C) Синий

Billy Chooses Red, но говорит, что он примет красный или желтый цвет в качестве ответов на матч.

John Chooses Yellow и говорит, что примет красные или желтые ответы. Поэтому, поскольку они оба выбрали цвета, которые находятся в каждом другом, «принимают список», тогда эти два будут соответствовать по вопросам.

Что такое хороший способ установить отношения и представить их в представлении? Мне сложно скрыть мой мозг вокруг этого ...

Спасибо!

ответ

1

Я не знаю, можете ли вы изменить свою схему, но если да, то, на мой взгляд, вы можете сделать это просто.

Я буду стараться делать что-то, как показано ниже:

модели (таблицы):

Users 
    -id 

Questions 
    -id 

Choices 
    -id 
    -question_id 

Answers 
    -id 
    -user_id 
    -choice_id 
    -question_id 
    -is_acceptance (boolean) 

User has_many answers 
Qestion has_many choices 
Choice belongs_to question 
Answer bleongs_to user , question 

Затем вы можете сохранить все ответы в одной таблице и флаг (истина или ложь) только главный ответ. В конце концов вы можете написать свою собственную логику для получения одинаковых ответов, принятия ответов и т. Д.

+0

Да, я открыт для изменения схемы. У меня есть привычка, иногда обижающаяся! Разве мне не нужен хатмм? Как отображать только те вопросы/ответы, которые имеют отношение к зарегистрированному пользователю? Извините, тупой вопрос, который я понимаю! Еще раз спасибо – Sean

+0

HABTM является мамой для многих ассоциаций [link] (http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association) Я не вижу, что вы можете связать именно так. btw в habtm вам нужна новая таблица соединений. Если вам понадобится другой ответ от accept_answer, вы можете построить новую модель (почти так же, как и ответ). Все ответы связаны с пользователем, и я думаю, что не будет проблем отображать ответы только для входа в систему :) – Karol85

Смежные вопросы