2017-02-02 7 views
1

У меня есть приложение Rails 5 с публикациями. Эти публикации нужно заказывать по годам, а последние годы - сверху.Rails приложение не сортирует публикации по годам

Поле years в публикации имеет целочисленный тип данных.

PublicationsController имеет сортировать actionmethod:

def sort 
    @category = PublicationCategory.find_by_name(params[:category]) 
    @publications = Publication.sort_by_category(@category.id).grouped_by_year 
end 

Я создал области действия grouped_by_year:

app/models/publication.rb 

scope :grouped_by_year, ->{ order(year: :desc).group_by { |p| p.year} } 

я создал три публикации, один из года 2016, 2015 и 2014

но вместо этого в этом порядке:

2016 
2015 
2014 

они появляются в порядке:

2015 
2014 
2016 

ли кто-то есть идея, что может быть проблема?

Мой репозиторий кода по адресу:

https://github.com/acandael/hedera-rails

спасибо за вашу помощь,

Энтони

+0

Вы можете попробовать: scope: grouped_by_year, -> {group (: year) .order (year:: desc)} '? – Sajan

+0

Я попробовал, но затем я получаю сообщение об ошибке: PG :: GroupingError: ERROR: column "publications.created_at" должен появиться в предложении GROUP BY или использоваться в агрегированной функции LINE 1: ..._ id "= $ 1 GROUP BY «publications». «Year» ORDER BY created_at ... – Toontje

+0

Я вижу, что каким-то образом он упорядочивается 'created_at', поэтому, прежде всего, вы можете переименовать столбец' year' в 'публикацию' на что-то еще, так как я подумайте, что это ** зарезервированное слово **, а затем повторите попытку? – Sajan

ответ

0

Удалить это из sort_by_category сферы, это портя порядок окончательного запроса.

.order('created_at desc') 

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

  • Нет связанных вопросов^_^