Поиск на основе HABTM без жестко запрограммированных фрагментов SQL - PullRequest
1 голос
/ 15 марта 2011

Заказ устройств и устройств habtm Заказы habtm.

Мне нужно найти заказы, имеющие ВСЕ указанные устройства

Я делаю следующее:

devices = Device.all :conditions => {:name => params[:devices].split(",")}
@orders = Order.all :joins => :devices, :conditions => {:devices => devices}

Производитследующий SQL:

ВЫБРАТЬ «заказы». *

ИЗ «заказов»

INNER JOIN «orders_devices» ON «orders_devices» .order_id = «orders».id

INNER JOIN "устройства" ON "устройства" .id = "orders_devices" .device_id

WHERE ("orders". "devices" IN (110330561,530240381)) ЗАКАЗАТЬ по дате DESC)

Последняя строка запроса неверна, и, конечно, я получаю ошибку:

SQLite3 :: SQLException: нет такого столбца: orders.devices

Почему я получаю этот результат?

Как я могу решить эту проблему, не указав фрагменты SQL-запроса, например:

:conditions => ['devices.id in (?)',[1,2]]

1 Ответ

3 голосов
/ 15 марта 2011

Может быть, только это?

@orders = Order.all(:joins => :devices, :conditions => {"devices.id" => devices})
...