我正在通过联接执行ActiveRecord查询。我有由问题组成的调查(我在其中存储答复)。我想限制/选择在Question上有枚举值(状态)的记录。为“ nil”,因为用户尚未设置。
除了将enum值限制为“ nil”或“”之外,我可以使联接返回所需的内容。
以下是“调查”模型:
Book
这是问题模型:
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
以下是我尝试过的几种变体,但均未成功:
@response = Question.joins(:survey).where('surveys.product_id = ? and surveys.question_one_response = ? and questions.question_number = ?', @product.id, 1, 4)
答案 0 :(得分:1)
您必须使用其中一个
Question
.joins(:survey)
.where(surveys: { product_id: @product.id })
.where(surveys: { question_one_response: 1 })
.where(question_number: 4)
.where(status: nil)
或....
Question
.joins(:survey)
.where(surveys: { product_id: @product.id })
.where(surveys: { question_one_response: 1 })
.where(question_number: 4)
.where('status IS NULL')