0
以下是我想要的結果,但我試圖弄清楚是否可以使用join或include來完成此操作。Rails ActiveRecord使用join或include來代替find_by_sql來獲取兩個表的屬性
@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沒有在項目表中匹配的項目。 另外,我沒有這兩個表之間的關聯,一些物品的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
這隻返回來自項目的屬性,而不是來自items_with_metadata的屬性 – snowleopard
我編輯了我的答案。 ActiveRecord引用對象而不是SQL表。您需要的數據將存儲在內存中,但不能表示爲包含兩個表'列的連接的單個表。當你需要關聯的元數據時,只需通過Item對象的相應方法來引用它。 –
這隻適用於我有名爲items_with_metadata的關聯。但正如前面提到的,我沒有表格之間的任何關聯。它的開始看起來更像是沒有對錶格做任何改變,我無法使用ActiveRecord方法來做我想做的事情,並且可能必須像我一樣使用SQL。 – snowleopard