Если эти модели не являются UNION-совместимыми, вы не можете выполнить запрос в одном операторе, но вы будете нуждаться в трех различных запросов.
Если предположить, что эти модели отличаются, то, что вы можете сделать, это
(Villa.where(promote: true).to_a +
Apartment.where(promote: true).to_a +
Breakfast.where(promote: true).to_a).sort_by(&:sorting)
Начиная с этого заявления, есть много способов, чтобы написать это более элегантно, в том числе областей, пользовательских функций и т.д.
def promotions(*models)
models.inject([]) do |records, model|
records += model.where(promote: true).to_a
end.sort_by(&:sorting)
end
promotions(Villa, Apartment, Breakfast)
# => [..., ..., ...]
спасибо .. я попробую! – Remco