以下は私が望む結果を取得しますが、代わりに結合またはインクルードを使用してこれを行うことができたかどうかを把握しようとしています。
@items = Item.find_by_sql("SELECT *
FROM items_with_metadata
FULL OUTER JOIN items ON items.id = items_with_metadata.item_id")
その結果、両方のテーブルからすべての属性を取得し、items_with_metadata が items テーブル内のアイテムと一致しなかった場合、属性は null になります。また、2 つのテーブル間に関連付けはありません。いくつかのアイテムの ID がたまたま両方のテーブルにあるだけです
たとえば、アイテムテーブルがある場合
id | name | active
------------------
123 | a | 0
456 | b | 1
そして items_with_metadata には
color | usable | location | item_id
-----------------------------------
red | yes | north | 123
クエリの結果は
id | name | active | color | usable | location | item_id
--------------------------------------------------------
123 | a | 0 | red | yes | north | 123
456 | b | 1 | | | |
ActiveRecordの結合またはインクルード、またはfind_by_sqlではない他のActiveRecordメソッドを使用してこれを行う方法があることを望んでいました