habtm 장치 및 장치 habtm 주문을 주문하십시오.하드 코딩 된 SQL 조각이없는 HABTM 기반 검색
이SELECT "orders".*
FROM "orders"
INNER JOIN "orders_devices" ON "orders_devices".order_id = "orders".id
INNER JOIN "devices" ON "devices".id = "orders_devices".device_id
WHERE ("orders"."devices" IN (110330561,530240381)) ORDER BY date DESC)
쿼리의 마지막 문자열은 다음과 같습니다
devices = Device.all :conditions => {:name => params[:devices].split(",")}
@orders = Order.all :joins => :devices, :conditions => {:devices => devices}
그것은 SQL 다음이 생성
나는 내가 다음과 같은 일을 해요 ALL 지정된 장치
를 가진 주문을 찾을 필요 정확하지 않으며 오류가 발생합니다.
SQLite3::SQLException: no such column: orders.devices
왜 나는이 결과를 얻고 있습니까?
어떻게 그렇게, SQL 쿼리 조각을 지정하지 않고, 문제를 해결할 수 :
:conditions => ['devices.id in (?)',[1,2]]
"devices.id"를 피할 수있는 방법이 있습니까? – AntonAL
나는 그것을 표현하는 다른 방법을 모른다. 그것은 읽을 수있어, 나는 그것이 SQL 조각 (그것이 "장치의 ID"라고 말함)이라고 생각하지 않을 것이다. * arel *에서는'Devices.arel_table [: id] .in (devices)'와 같은 것을 할 수 있지만, 이것이 더 나은지는 의심 스럽습니다. * DataMapper *에서는 예제가 작동 할 수 있지만 DM에는 다른 문제가 있습니다. –