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)