Activerecord查询搜索零个枚举

时间:2019-04-21 16:04:38

标签: ruby-on-rails activerecord enums

我正在通过联接执行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)

1 个答案:

答案 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')