Ruby或Rails在两个/多个日期字段上排序

看起来很简单 – 我想组合两个模型查询并按日期DESC对它们进行排序,但日期字段的命名方式不同。

@news_and_posts = [News.all(:limit => 3, :order => "date_of_news DESC") + Post.all(:limit => 3, :order => "date_of_post DESC") 

我试过了

 @news_and_posts = [News.all(:limit => 3, :order => "date_of_news DESC") + Post.all(:limit => 3, :order => "date_of_post DESC").sort_by {|n, p| [n.date_of_news, p.date_of_post]} 

谢谢!

您应该使用一个别名来返回您想要比较的每个模型中实现的日期(例如,一个名为“date”的方法)。

然后按此date对列表进行排序:

(感谢@tokland更好的实施)

 my_collection.sort_by(&:date)