通过updated_at对ruby数组进行排序

Ste*_*fan 3 ruby arrays sorting model ruby-on-rails

我想要做的就是从我的模型中获取最新的项目,然后通过属性"updated_at"对它们进行排序(最新的项目).

某处是错误,但我找不到它:

  @results = Array.new
  Note.find(:all, :limit => 3, :order => "created_at DESC").each do |item|
      @results << item
  end

  Picture.find(:all, :limit => 3, :order => "created_at DESC").each do |item|
    @results << item
  end


  @results = @results.sort_by{ |result| result.updated_at}
Run Code Online (Sandbox Code Playgroud)

Rob*_*rco 10

您需要在排序中进行比较.`

  @results = Array.new
  Note.find(:all, :limit => 3, :order => "created_at DESC").each do |item|
      @results << item
  end

  Picture.find(:all, :limit => 3, :order => "created_at DESC").each do |item|
    @results << item
  end
  @results.sort!{|a,b|a.updated_at <=> b.updated_at}
Run Code Online (Sandbox Code Playgroud)

这将对@results数组进行排序.


Sim*_*tti 8

notes    = Note.find    :all, :limit => 3, :order => "created_at DESC"
pictures = Picture.find :all, :limit => 3, :order => "created_at DESC"
@results = (notes + pictures).sort_by(&:updated_at)
Run Code Online (Sandbox Code Playgroud)