【问题标题】:Rails - :order by calculated dataRails - :按计算数据排序
【发布时间】:2010-11-01 09:33:45
【问题描述】:

我在需要排序的表格中显示了多个数据实例 - 这些数据大部分是从表格中计算出来的,而不仅仅是表格中的原始值。

一个简单的例子:Column A = User.visits / User.membership_term

我正在使用可排序的表格列:http://railscasts.com/episodes/228-sortable-table-columns

我尝试将计算放在控制器中并向我的模型添加类方法,但似乎都不起作用。如何按计算字段排序?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 jquery-ui-sortable


    【解决方案1】:

    你总是可以使用基本的排序方法:

    irb(main):001:0> a = [1, 2, 3, 4, 5]
    => [1, 2, 3, 4, 5]
    
    irb(main):002:0> a.sort {|d,e| (d - 3).abs <=> (e - 3).abs}
    => [3, 2, 4, 1, 5]    # sort by closest distance away from the number 3
    

    因此您可以使用类似的方式对您的活动记录数组进行排序。

    【讨论】:

    • 感谢您的回复。那么你如何限制前 5 个结果呢?我尝试在控制器中的排序后添加 .limit(5) 但没有运气。
    • 我想出了一种方法 - 只需将 [0,4] 添加到末尾。
    • 这可能是 Rails 3 的版本,但您不能对查询进行排序。它破坏了 activerecord 对象。
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2012-03-01
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多