gpt4 book ai didi

ruby-on-rails - Ransack:按年份排序

转载 作者:行者123 更新时间:2023-12-04 03:24:35 25 4
gpt4 key购买 nike

我正在处理 ransack,我需要按创建年份(仅年份,而不是整个日期)进行排序。所以我在 Controller 中有这个:

@q = Book.search(params[:q])
@q.sorts = 'book_year' if q.sorts.blank?
@books = @q.result(distinct: true)
.select('books.*, EXTRACT(YEAR FROM books.created_at) as book_year')
.page(params[:page])

但它不起作用。该订单未添加到 sql 查询中。

你知道我怎样才能做到这一点吗?

最佳答案

当您对搜索结果执行select 查询时,排序顺序将被移除,因为它将执行对数据库的查询以获取记录。要对结果应用排序,您必须在 select 子句之后添加 order 子句。

@q = Book.search(params[:q])
@q.sorts = 'book_year' if q.sorts.blank?
@books = @q.result(distinct: true)
.select('books.*, EXTRACT(YEAR FROM books.created_at) as book_year')
.order('book_year')
.page(params[:page])

关于ruby-on-rails - Ransack:按年份排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com