2014-11-06 3 views
0

Я хочу сделать страницу (продвижение) для моделей завтрак, квартира и вилла. Идея состоит в том, чтобы объединить эти модели в одну область, где атрибут promote равен true и сортировать по атрибуту sorting Возможно ли это?Объем для размножения моделей

Thanks..remco

ответ

1

Если эти модели не являются 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) 
# => [..., ..., ...] 
+0

спасибо .. я попробую! – Remco

Смежные вопросы