3

我在我的 ruby​​ on rails 博客项目中设置了许多不同的模型。目前不同的模型类型是文章、快速提示、引用和定义。我已经创建了一个页面,我想在一个按创建时间排序的流中显示所有这些。

问题:什么是检索特定数量的项目的智能/有效方法,这些项目是从所有内容类型中选择的,按创建日期排序。

希望说明性的伪代码:

Db.load([:Tip, :Quote, :Article, :Definition]).order_by(:created_at).limit(10)

到目前为止,我自己想出的最佳解决方案是加载每个类别的 10 个项目,对它们进行排序并选择排序列表中的最新 10 个。:P

4

3 回答 3

0

所以做我想做的事情的方法是创建一个超类,比如 Post,并让所有其他内容类型都继承自这个模型。这将创建一个单表继承方案,其中所有子类属性都保存在“posts”表中,以及便于区分内容类型的“type”属性。我应该仍然能够正常使用所有内容类型,但也可以获得一个帖子模型,我可以在其中同时查询和排序所有内容类型。

有关该技术的更多信息,请参见此处

于 2013-09-22T15:08:32.557 回答
0
[Tip, Quote, Article, Definition].map{|model_name| model_name.order(:created_at).first(10)}
于 2013-09-05T18:09:14.543 回答
0

把它们结合起来。

(Tip.all + Quote.all + Article.all + Definition.all).order_by(:created_at).limit(10)

或者

tips = Tips.all.limit(10)
quotes = Quotes.all.limit(10)
(tips + quotes).order_by(:created_at).limit(10)

明白了吗?

可能有用的类似问题

于 2013-09-05T18:01:51.177 回答