2014-11-05 6 views
0

Я пытаюсь найти умный способ получить некоторые записи.Активный запрос записи: как группировать для ассоциации

У меня есть эти классы:

class Question < ActiveRecord::Base 
    belongs_to :section 
    has_many :answers 
    has_many :quiz_questions 
    has_many :quizzes, through: :quiz_questions 
    has_many :question_stats 
end 

class User < ActiveRecord::Base 

    has_many :quizzes, dependent: :destroy 
    has_one :user_profile 
    has_many :questions, through: :quizzes 
    has_many :question_stats 
end 

class Section < ActiveRecord::Base 
    has_many :questions 
    has_many :quizzes 
end 

class QuestionStat < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :question 
end 

Если я запрос для

current_user.question_stats 

Я получаю мои объекты

=> [#<QuestionStat id: 1, user_id: 2, question_id: 2, errors_count: 0, done_count: 0, done: false>, 
#<QuestionStat id: 6, user_id: 2, question_id: 39, errors_count: 0, done_count: 0, done: false>, 
#<QuestionStat id: 7, user_id: 2, question_id: 102, errors_count: 0, done_count: 0, done: false>, 
#<QuestionStat id: 8, user_id: 2, question_id: 96, errors_count: 0, done_count: 0, done: false>, 
#<QuestionStat id: 9, user_id: 2, question_id: 46, errors_count: 0, done_count: 0, done: false>, 
#<QuestionStat id: 10, user_id: 2, question_id: 119, errors_count: 0, done_count: 0, done: false>, 

Мне нужно сгруппировать статистику для секции, так что я знаю для каждого раздела сколько вопросов отвечает пользователь и сколько ошибок он сделал.

Question_id принадлежит_to Вопрос, относящийся к разделу.

Я стараюсь также действовать по-другому, начиная с current_user.questions

Если я запрашиваю

current_user.questions 

Я получающий на все вопросы пользователя ответ.

<Question id: 94, quiz_type: "base", image: nil, text: "Com'è chiamato l'insieme degli organi con i quali ...", section_id: 1>, 
#<Question id: 68, quiz_type: "base", image: nil, text: "Come viene denominata la parte di calpestio più ba...", section_id: 1>, 
#<Question id: 111, quiz_type: "base", image: nil, text: "Un'elica destrorsa:", section_id: 1>, 
#<Question id: 103, quiz_type: "base", image: nil, text: "Si ha cavitazione quando:", section_id: 1> 

Конечно

current_user.questions.first.questions_stats.first 

возвращение мне стат для конкретного вопроса, связанного с одним пользователем.

ответ

0

я бы рекомендовал включить section_id в статистике вопроса, так что вы могли бы просто сделать

QuestionStat.where(section: 1, user_id: current_user.id) 

так, как вы текущие ассоциации/таблицы/столбцы, запрос, чтобы получить статистику вопроса по секторам будет очень грязно насколько я могу это понять.

+0

Вы предлагаете другое моделирование данных? –

+0

Просто просто столбец 'section_id', который у вас есть на модели' Question', также в модели 'QuestionStat'. – Kasperi

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