我的以下有效记录声明工作正常:
Requirement.where(no: 0)
Requirement.yes_no.or(Requirement.where.not(parent_req: nil))
在需求模型中,我有一个enum
字段,它也可以正常工作:
enum response_type: { yes_no: 0, document: 1, interviewee: 2, sample_set: 3, brief_desc: 4 }
但是,当我将上述两个陈述合并时:
Requirement.where(no: 0).where(Requirement.yes_no.or(Requirement.where.not(parent_req: nil)))
它给了我错误:
ArgumentError: Unsupported argument type: #<Requirement::ActiveRecord_Relation:0x005567c7c9bf88> (Requirement::ActiveRecord_Relation)
我希望运行以下查询:
SELECT `requirements`.*
FROM `requirements`
WHERE `requirements`.`no` = 0
AND (`requirements`.`response_type` = 0
OR (`requirements`.`parent_req` IS NOT NULL))
答案 0 :(得分:0)
Rails 5: ActiveRecord OR query
Requirement.yes_no.or(Requirement.where.not(parent_req: nil)).where(no: 0)
将where(no: 0)
放在ar查询的末尾
答案 1 :(得分:0)
使用AND
(十字路口)进行组合,如Tom Lord所提到的那样merge。
Requirement.where(no: 0).merge(Requirement.yes_no.or(Requirement.where.not(parent_req: nil)))