0

ActiveRecord には A と B という 2 つのモデルがあり、両方のモデルの主キーである item_id フィールドがあります。

しかし、それらの間に関連性はありません (has_many、belongs_to など)

A: item_id、attr_1、attr_2

B: item_id、attr_3、attr_4

ここで、attr_1 ..attr_4 を含むいくつかの句について、A と B の両方からデータをフェッチする必要があります。

SQL: A.item_id=B.item_id および attr_1="foo" および attr_3="bar" である A、B から A.item_id、attr_1、attr_2、attr_3、attr_4 を選択します。

私が今考えているオプションは、AとBの両方がクエリの分割(テーブル、句、フィールドなど)をコントローラーに返し、コントローラーに上記のようなクエリを作成させることです。次に、ActiveRecord::Base.connection.execute(query) を使用してクエリを実行します。

PS: 最初のモデルから結果を取得したくありません。それを反復して、2 番目のモデルから結果を取得します。あまりにも多くの db クエリが発生します。また、関連のないデータが含まれているため、両方のテーブルをマージしたくありません。

より良い提案はありますか?

4

1 に答える 1