Ruby on rails Rails应用程序。从多个模型中收集项目,并在主页上显示此项目分页列表

Ruby on rails Rails应用程序。从多个模型中收集项目,并在主页上显示此项目分页列表,ruby-on-rails,ruby-on-rails-3,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Rails Activerecord,在Rails应用程序中,我有三个模型(POST、Shop::Items和Directory::Items)。每个模型都与其他模型(用户、类别、城市…)有关系。所有这些信息,我必须在主页上显示。它应该看起来像一个分页的项目列表。我在用postgres做数据库 我们可以在控制器中编写这样的代码: @postings = Posting.includes(:category, :subcategory, :user, :city).all @directory_items = Directory::I

在Rails应用程序中,我有三个模型(POST、Shop::Items和Directory::Items)。每个模型都与其他模型(用户、类别、城市…)有关系。所有这些信息,我必须在主页上显示。它应该看起来像一个分页的项目列表。我在用postgres做数据库
我们可以在控制器中编写这样的代码:

@postings = Posting.includes(:category, :subcategory, :user, :city).all
@directory_items = Directory::Item.includes(:category, :user, :city).all
@shop_items = Shop::Item.includes(:category, :user, :city, :phone).all
并对结果进行排序。但这不是最好的办法

第二种解决方案是编写自定义查询ommitting ActiveRecord。但是这个查询非常大,很难支持它(我们有很多连接)

对于数据库查询量最小的问题,最好的解决方案是什么?(这是主页,所以它应该运行得很快)。

在中有一些解决方案不快

或者,您也可以与gem一起使用。这样,它将是快速和干净的

ThinkingSphinx.search classes: [Posting, Shop::Items, Directory::Items], page: params[:page] || 1, per_page: 10

由于查询将被缓存,因此只有排序需要时间。如果不显示太多的项,开发人员的可读性将远远超过优化此项的成本。如果性能确实是一个瓶颈,那么您总是可以做得更好,但是您仍然可以选择使此代码过于复杂。

向我们展示一些代码。我补充了一些如何实施的想法。但我不喜欢这些解决方案。这就是为什么要问这个问题。