2014-09-04 2 views
1

동일 쿼리는 예를 들어, 체인에 (잘못)레일 속성이 foo는 또는 줄

Model.where(attribute: "foo" || "bar") 

특히 유용과 같은 개체를 사용하여

Model.where("attribute = ? OR attribute = ?", "foo", "bar") 

를 작성하는 방법이 있나요 :

Model.where(attr_one: "blaz").where("attr_two = ? OR attr_two = ?", "foo", "bar") 

이 (잘못)

Model.where(attr_one: "blaz", attr_two: "foo" || "bar") 

마음이 행복합니다.

Model.where(attr_one: 'blaz', attr_two: ['foo', 'bar']) 
# Or chained: 
Model.where(attr_one: 'blaz').where(attr_two: ['foo', 'bar']) 

이 같은 쿼리가 발생할해야 : 그 위치에 배열 ['foo', 'bar'] 전달

+0

의 문제를 당신의 의도는''foo ''|| "bar"는 "foo"로 평가되기 전에 ActiveRecord가 그걸로 무엇이든 할 수 있습니다. – tadman

답변

3

당신의 attr_two = ? || OR attr_two = ?에 동등한 IN() 절, 생성 쿼리가 발생합니다

SELECT model.* FROM model WHERE model.attr_one = 'blaz' AND model.attr_two IN ('foo', 'bar') 
관련 문제