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