У меня есть три основные модели, которые касаются этого случая. Кратко их отношения, как это:Rails 4 Модель фильтра несколько раз с вложенными атрибутами
class Person < ActiveRecord::Base
has_many :sessions, dependent: :delete_all, inverse_of: :person
has_many :answers, through: :sessions
end
class Session < ActiveRecord::Base
belongs_to :person, inverse_of: :sessions
has_many :answers
end
class Answer < ActiveRecord::Base
belongs_to :session
end
Чтобы быть кратким и сосредоточиться на проблеме, я буду суммировать атрибуты модели и сосредоточиться только на модели Ответ поскольку они единственные, что мне нужно, чтобы делать то, что мне нужно. Ответы модели имеют следующие атрибуты:
# == Schema Information
#
# Table name: answers
#
# id :integer not null, primary key
# session_id :integer
# question_option_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
То, что я хочу, чтобы отфильтровать людей записи в соответствии со значением question_option_id, предоставленной из формы, то пользователи имеют возможность фильтрации с одним или несколькими ответами значения параметров вопроса. значения отправляются без проблем, но я безуспешно пытался фильтровать человек запись, это ближе всего я был с частичным успехом:
people = Person.all
people = people.joins(:answers).uniq.where(answers: {question_option_id: some_param})
С этим я был в состоянии отфильтровать со значением один вариант вопрос, проблема возникает, когда я пытаюсь фильтровать более чем один вариант вопроса он ничего не возвращает, это то, что я пробовал:
people = Person.all
people = people.joins(:answers).uniq.where(answers: {question_option_id: some_question_option_id_param})
people = people.joins(:answers).uniq.where(answers: {question_option_id: another_question_option_id_param})
проблема заключается в том, что при этих условиях, поисковый запрос для людей с один ответ, который имеет как значения question_option_id whi ch невозможно. То, что я пытаюсь выполнить, - это сделать запрос для поиска людей, у которых есть эти параметры параметров id среди всех ответов, которыми они обладают. Извините, если мне трудно понять, но это то, что я пытаюсь сделать, я не уверен, что я делаю правильный подход, любые предложения приветствуются.