3

私はこのような私のモデルを持っています:

A < ActiveRecord::Base
- has_many :z

B < A
- has_many :y

C < A
- has_many :x

どこかで、次のようなことをしたい:

A.all.includes([:z,:y, :x])

ただし、一部のアイテムは特定のタイプのものBであり、他のアイテムはC.

条件付きで1つまたは別のものを含めるにはどうすればよいですか?

4

2 に答える 2

2

本当の修正は見つかりませんが、私はこれをやっています:

all = B.includes([:z, :y])
all = (all + C.includes([:z, :x])).sort_by(&:date)

それほどきれいではありませんが、当面の問題は解決します。多くの速度改善。

ありがとう。

于 2013-03-26T16:32:53.620 に答える
0

少し面倒ですが、完全に正しい解決策です。

A.from("(#{B.includes(:y).to_sql} UNION #{C.includes(:x).to_sql}) as #{A.table_name}").includes(:z)
于 2015-08-06T18:01:30.050 に答える