0

У меня есть две модели, Субподрядчик:Поиск где HABTM в HABTM другой модели

class Subcontractor < ActiveRecord::Base 
    has_and_belongs_to_many :trades 
end 

И Ставка:

class Bid < ActiveRecord::Base 
    has_and_belongs_to_many :trades 
end 

Я пытаюсь найти все субподрядчики, которые имеют сделок, которые соответствуют профессии конкретной ставки. Я пробовал что-то по строкам Subcontractor.where(trade_ids: bid.trade_ids), но это, похоже, не работает.

+0

Можете ли вы сказать, почему именно это запрос не работает? – depa

ответ

1

Вот как я, наконец, сделал запрос:

Subcontractor.joins(:trades).where('trades.id' => bid.trade_ids).uniq 
1

Если вы передаете массив запросу ActiveRecord, ActiveRecord достаточно умен, чтобы знать, что вы имеете в виду все элементы IN массива.

Вы пробовали

Subcontractor.where(trade_ids: bid.trades.pluck(:id)) 
0

Вы можете сделать это таким образом, также

Subcontractor.where("trade_id in (?)", bid.trades.pluck(:id)) 
Смежные вопросы