У меня есть приложение 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
спасибо за вашу помощь,
Энтони
Вы можете попробовать: scope: grouped_by_year, -> {group (: year) .order (year:: desc)} '? – Sajan
Я попробовал, но затем я получаю сообщение об ошибке: PG :: GroupingError: ERROR: column "publications.created_at" должен появиться в предложении GROUP BY или использоваться в агрегированной функции LINE 1: ..._ id "= $ 1 GROUP BY «publications». «Year» ORDER BY created_at ... – Toontje
Я вижу, что каким-то образом он упорядочивается 'created_at', поэтому, прежде всего, вы можете переименовать столбец' year' в 'публикацию' на что-то еще, так как я подумайте, что это ** зарезервированное слово **, а затем повторите попытку? – Sajan