Вы можете использовать collect
или map
, чтобы получить массив идентификаторов для использования в IN...
части запроса ...
@widgets_and_more = Widget.find(:all, :include => :widget_assoc, :conditions => ["widgets.id IN (?)", @widgets.collect(&:id)])
Или, поскольку Rails будет иметь дело сэто приятно и вызвать .to_param
для каждого из объектов, вы можете просто использовать массив @widgets
(то есть, если они являются экземпляром Widget
и отвечают на .to_param
, очевидно) ...
@widgets_and_more = Widget.find(:all, :include => :widget_assoc, :conditions => ["widgets.id IN (?)", @widgets])
Как вы сказали в своем вопросе, связывание двух запросов было бы гораздо более изящным способом справиться с этим.Если вы собираетесь сделать это таким образом, возможно, вы захотите получить первый запрос, чтобы выбрать только идентификаторы, чтобы, по крайней мере, вам не было необходимости хранить две партии одинаковых данных в памяти.