Ruby on Rails排序不起作用

时间:2015-04-21 08:02:06

标签: ruby-on-rails sorting

我的数据库显示正常,但排序无效。

在我的控制器中,我将索引定义为此

def index
  @player = Roster.sorted
end

在我的"花名册"模特我......

scope :sorted, -> { order("xoi DESC") }

我有" xoi"定义为......

def xoi      传递+跑步    端

3 个答案:

答案 0 :(得分:0)

您无法按Ruby中添加的方法进行排序。相反,你可以这样做:

scope :sorted, -> { select('*, (passing + running) as xoi').order('xoi DESC') }

当然,您提供的passingrunning属性是数据库中的列。

答案 1 :(得分:0)

需要将xoi定义为数据库中的列才能使其正常工作。 这里xoi是用ruby方法定义的,所以不是通过数据库进行排序,而是想通过ruby对集合进行排序,为此你可以使用sort_by,例如:

@player = Roster.all
@player.sort_by(&:xoi)

答案 2 :(得分:0)

你的xoi在范围内不起作用,它应该是数据库中的列如果你定义了内部条件:

scope :sorted, -> { order("passing + running") }
Roster.sorted.reverse