Я делаю запрос ActiveRecord с объединением. У меня есть опросы, которые состоят из вопросов (где я храню ответ). Я хотел бы ограничить / выбрать записи, где значение enum'd (статус) в вопросе. это «ноль», так как он не был установлен пользователем.
Я могу получить объединение, возвращающее то, что я хочу, за исключением ограничения значением enum значения "nil" или "".
Вот модель опроса:
class Survey < ApplicationRecord
enum question_one_response: { very_dissapointed: 0, somewhat_dissapointed: 1, not_dissapointed: 2 }
belongs_to :product
has_one :survey_request
has_many :questions
accepts_nested_attributes_for :questions
validates :questions, :presence => true
end
Вот модель вопроса:
class Question < ApplicationRecord
enum status: { useful: 0, not_useful: 1, archived: 2 }
belongs_to :survey
end
состояние является целым числом
Вот код, который «работает», но не включает требование «nil»:
@response = Question.joins(:survey).where('surveys.product_id = ? and surveys.question_one_response = ? and questions.question_number = ?', @product.id, 1, 4)
Вот несколько вариантов, которые я безуспешно пробовал:
@response = Question.joins(:survey).where('surveys.product_id = ? and surveys.question_one_response = ? and questions.question_number = ? and questions.status = ?', @product.id, 1, 4, nil)
@response = Question.joins(:survey).where('surveys.product_id = ? and surveys.question_one_response = ? and questions.question_number = ? and questions.status = ?', @product.id, 1, 4, "")
@response = Question.joins(:survey).where('surveys.product_id = ? and surveys.question_one_response = ? and questions.question_number = ? and questions.status = ?', @product.id, 1, 4, blank?)