Ruby 或 Rails 对两个/多个日期字段进行排序 [英] Ruby or Rails sort on two/multiple date fields

查看:41
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆