我将 SmartListing gem 与我的 Ruby (2.1.2p95) on Rails (4.0.0) 项目结合使用,从 ActiveRecord 记录组创建可排序/分页表,我们将其称为订单。每个订单可以有许多项目,每个项目的表上都有一个成本字段。我需要能够按订单号(订单表中的字段)、商品数量(订单模型上的类方法)和总成本(订单模型上的类方法)进行排序。
有没有办法使用显式的 sort_attributes 来调用该方法(即 order.item_total 或 order.number_of_items),而不是使用 MySQL 表中不存在的字段? “orders”表中没有“item_totals”列或“number_of_items”列,这两个调用都是“items”表中字段/计数的聚合。
@orders = smart_listing_create(:orders, @user.orders, partial: 'orders/order', sort_attributes: [[:id, 'id'],[:item_total, '???'],[:number_of_items, '???']]
提前感谢您的帮助,如果我可以澄清任何问题,请告诉我。
-戴夫
最佳答案
所以没有任何方法可以完全按照我要求的方式完成我所要求的事情(基本上是将 Ruby 代码与 SQL 结合起来)。不过,还是有办法解决的!由于 smart_listing
确实支持显式排序(按连接列名称排序,即 [:created_at, 'orders.items.created_at']
if orders.joins(:items )
),您可以简单地创建一些派生表并使用显式排序对它们进行排序。瞧!
关于mysql - 如何在 SmartListing gem 中使用实例方法而不是 MySQL 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046116/