按日期排序2 Activerecords - 日期字段在RAILS中是不同的名称

时间:2016-03-23 14:26:34

标签: ruby-on-rails ruby sorting date activerecord

这是我在这里发表的第一篇文章(第一次我无法找到答案!)

我有2条记录

Course.spotlight
NewsItem.spotlight

两者都返回5条记录。我把它们结合起来:

@spotlight = Course.spotlight + NewsItem.spotlight

Course.spotlightrelease_date排序 NewsItem.spotlightpublish_at排序,两者都是日期字段。

我的问题是,当日期字段是不同的名称时,我如何(现在它们被合并)按日期排序?

1 个答案:

答案 0 :(得分:3)

您可以使用Ruby方法sort_by

@spotlight = @spotlight.sort_by do |record|
  if record.respond_to?(:release_date)
    record.release_date
  else
    record.publish_at
  end
end
# sort by date ASC, you can use reverse! to change to order to DESC
# @sportlight.reverse!

此代码表示每个@spotlight记录将始终返回调用release_datepublish_at的日期(Ruby无法将日期与日期进行比较)。此外,如果您在@spotlight中有大量记录(如一百条或更多记录),这在演出中可能会很昂贵。