2016-12-19 4 views
0

У меня есть модель Post. Я хочу показать первые сообщения, где name is 'esa', а затем заказать по updated_at.Rails default_scope на основе некоторого значения

Я попробовал это в post.rb, но не работает:

default_scope {Post.where(name: 'esa') && order(updated_at: :desc) } 
+1

'default_scope' часто обескуражен, и это использование еще более странно. Вы уверены, что хотите, чтобы все запросы в таблицу 'posts' были отфильтрованы и упорядочены таким образом? – ndn

ответ

0

Это было бы довольно некрасиво, но здесь это.

default_scope do 
    order("CASE WHEN name = 'esa' THEN 0 ELSE 1 END").order(updated_at: :desc) 
end 
+0

это показывает мне только сообщение с именем esa, а не другие сообщения .. –

+0

@ Nda.S, потому что так работает запрос, - он возвращает вам набор элементов, которые соответствуют критериям, которые вы передали, в вашем конкретном случае в поле 'where' –

+0

@AndreyDeineko Я хочу показать мне первые сообщения с именем esa, а затем другое сообщение, заказанное обновленным_at –