使用模型方法对查询结果进行排序

时间:2011-07-27 17:07:29

标签: ruby-on-rails ruby ruby-on-rails-3

我有以下映射(@location_matches表示标准SQL查询`:

 @matches = @location_matches.map { |listing|

    }.compact

当我进入我的观点时,我可以访问@ matches.username等等等。

但是,当我添加此模型方法时,我将失去对任何信息的所有访问权限!

 @matches = @location_matches.map { |listing|
           listing.compute_score(current_user)

    }.compact

任何想法为什么?有一个更好的方法吗?谢谢你

1 个答案:

答案 0 :(得分:2)

这是按计算得分排序:

@matches = @location_matches.sort_by{|location| location.compute_score(current_user)}

http://www.ruby-doc.org/core/classes/Enumerable.html#M001481

如果您想要反向排序,请将.reverse放在最后。