Ruby 或 Rails 对两个/多个日期字段进行排序 [英] Ruby or Rails sort on two/multiple date fields
本文介绍了Ruby 或 Rails 对两个/多个日期字段进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
看起来很简单 - 我想组合两个模型查询并按日期 DESC 对它们进行排序,但日期字段的命名不同.
Seems simple enough- I'd like to combine two model queries and sort them all by date DESC, but the date fields are named differently.
@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"的方法)在您要比较的每个模型中实现.
You should use an alias returning the date (a method called 'date' for example) implemented in each model you want to compare.
然后按此 date
对您的列表进行排序:
Then sort your list by this date
:
(感谢@tokland 提供了更好的实现)
(Thanks to @tokland for a better implementation)
my_collection.sort_by(&:date)
这篇关于Ruby 或 Rails 对两个/多个日期字段进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文