我收到了此查询,并希望通过' delivery_time'来订购结果:
d = Date.today.at_midnight
orders = car.orders.where("finished_at IS NOT NULL AND delivery_time > ?", d).order(delivery_time: :desc)
问题是,订单方法不起作用 - 它仍然按ID排序!无论我在命令方法中加入什么参数似乎都不起作用。
这是我的订单表的部分内容:
create_table "orders", force: true do |t|
t.datetime "delivery_time"
t.datetime "finished_at"
t.datetime "created_at"
t.datetime "updated_at"
end
car.rb:
has_many :orders, -> { order "delivery_time ASC" }
.explain输出:
SELECT `orders`.* FROM `orders` WHERE `orders`.`car_id` = 1 AND (finished_at IS NOT NULL AND delivery_time > '2014-09-09 03:00:00') ORDER BY delivery_time ASC, `orders`.`delivery_time` DESC
答案 0 :(得分:1)
要覆盖排序,请尝试使用reorder
代替order
。
orders = car.orders.where(
"finished_at IS NOT NULL AND delivery_time > ?", d
).reorder(delivery_time: :desc)