mysql - 如何在 SmartListing gem 中使用实例方法而不是 MySQL 字段?

标签 mysql ruby-on-rails rubygems smart-listing

我将 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/

相关文章:

PHP - 发送带有一个复选框和 POST 的完整行

php - 表中没有插入数据

ruby-on-rails - 使用 ci_reporter 运行 Rake rspec 任务时出现问题

ruby-on-rails - 如何在 Windows 上安装 mysql2 gem

ruby-on-rails - 如何降级 gemfile 中的 gem?

php - MySQL 如果存在则更新一行,如果不存在则插入,以及一般查询建议

php - 如何使用 GPS 坐标从 mysql 检索最近的数据?

sql - Rails 中 SQL 迁移的 updated_at 和 created_at 默认值有问题吗?

ruby-on-rails - Rails 和针对旧数据库的测试

ruby-on-rails - Ruby on Rails API 教程