Rails:scope使用created_at日期而不是时间



我想显示用户的所有订单,并按日期(不含时间(排序,然后使用范围根据状态排序。我找到的最接近的方法是这样做,但我想知道是否有更好的方法:

型号:order.rb

...
scope :order_by_year, -> {order "EXTRACT('year' FROM created_at) DESC"}
scope :order_by_month, -> {order "EXTRACT('month' FROM created_at) DESC"}
scope :order_by_day, -> {order "EXTRACT('day' FROM created_at) DESC"}
scope :order_by_status, -> {order shipment_status: :asc}

控制器:orders_Controller.rb

...
@orders = @user.orders
.order_by_year
.order_by_month
.order_by_day
.order_by_status

如果是Postgres数据库,可以使用日期函数进行订购,像

scope :order_by_created_date, -> {order("date(created_at) DESC/ASC") }

相关内容

  • 没有找到相关文章

最新更新