多个模型查询和排序

问题描述 投票:1回答:1

我想知道如何加入两个不同的模型,然后通过另一个相关的模型对它们进行排序。

假设我有一个ACCOUNT,它有多个CARS和BIKES,并且它们都与WHEELSET有多态关系(has_one)。

如何编写查询以选择给定帐户的所有自行车和汽车,并按轮组(或轮对模型中的其他列?)对它们进行排序?

Account
has_many :cars, :bikes

Bike
belongs_to :account
has_one wheelset, :as => wheelable

Car
belongs_to :account
has_one wheelset, :as => wheelable

Wheelset
belongs_to :wheelable, :polymorphic => true

我正在考虑以下内容(不幸的是,这不起作用)

a = Account.first
sets = a.bikes.includes(:wheelset) + self.cars.includes(:wheelset)
sets.order('wheelset.wheels ASC')
ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.1
1个回答
3
投票

您可以构建一个标准的Ruby数组,并使用数组sort method对它们进行排序。

a = Account.first
sets = Array.new
sets += a.bikes + a.cars
sets.sort! { |a, b| a.wheelable <==> b.wheelable }

我没有对此进行测试,但考虑到这种情况,我大致会对此进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.