你能做一个:找到后在红宝石中订购吗?

jer*_*ith 3 ruby activerecord ruby-on-rails

在执行查找后,ruby/rails是否可以对结果集进行排序?例如,是否可以做这样的事情

警告:不起作用

if type == 1
  @items = mycompany.items
else
  @items = myhome.items
end

@items = @items :order => "created_at"
Run Code Online (Sandbox Code Playgroud)

我会假设这样的事情应该是可能的,但我仍然是RoR的新手,似乎无法在谷歌上找到任何东西.

Mik*_*use 6

你应该可以做其中一个:

访问时排序:

if type == 1
  @items = mycompany.items(:order => 'created_at')
else
  @items = myhome.items(:order => 'created_at')
end
Run Code Online (Sandbox Code Playgroud)

访问后排序:

@items.sort{|a,b| a.created_at <=> b.created_at}
Run Code Online (Sandbox Code Playgroud)


Dan*_*uis 5

你也可以使用Symbol,以Proc速记在轨可用,以及Enumerable#sort_by简化你的那种说法,如果你想收集ActiveRecord对象后进行排序:

@items.sort_by(&:created_at)
# is the same as @items.sort{ |a, b| a.created_at <=> b.created_at }
Run Code Online (Sandbox Code Playgroud)