Ruby on rails RubyonRails有点不起作用

Ruby on rails RubyonRails有点不起作用,ruby-on-rails,sorting,Ruby On Rails,Sorting,我的数据库显示正常,但排序不起作用 在我的控制器中,我将索引定义为 def index @player = Roster.sorted end 在我的“花名册”模型中我有 scope :sorted, -> { order("xoi DESC") } 我把“xoi”定义为 def xoi 传球+跑动 结束您不能按照Ruby中添加的方法进行排序。相反,您可以执行以下操作: scope :sorted, -> { select('*, (passing + running) as

我的数据库显示正常,但排序不起作用

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

def index
  @player = Roster.sorted
end
在我的“花名册”模型中我有

scope :sorted, -> { order("xoi DESC") }
我把“xoi”定义为

def xoi 传球+跑动
结束

您不能按照Ruby中添加的方法进行排序。相反,您可以执行以下操作:

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

当然,前提是您的
passing
running
属性是DB中的列

xoi需要定义为数据库中的一列,才能工作。 这里,xoi是在ruby方法中定义的,因此您不希望通过数据库进行排序,而是希望通过ruby对集合进行排序,为此,您可以使用sort_,例如:

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

您的
xoi
将无法在范围内工作,如果您在条件中定义了以下内容,则它应该是数据库中的列:

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

@cwayne2有用吗?是的!我爱你!你赢了!我会给你金银的!说真的…现在我明白了这个社区的力量,非常感激。祝你好运。