小编XP8*_*P84的帖子

ActiveRecord(Rails):如何在没有关联的情况下在Rails中进行自定义(SQL)连接?

我可以编写这个触及2个表的查询,并给出我想要的结果:

select inv.* from
item_to_sku its
left join inventory inv on its.sku_id=inv.sku_id
where its.item_id in (12345, 67890)
Run Code Online (Sandbox Code Playgroud)

我可以在Rails中接近它:

ItemToSku.includes(:sku => :inventory).find_all_by_item_id([12345, 67890])
Run Code Online (Sandbox Code Playgroud)

但这毫无意义地涉及SKU表.由于ItemToSku和Inventory都有sku_id,我想直接将它们连接在一起,就像上面的SQL版本一样.

如果不在我的多对多表模型(ItemToSku)中添加令人困惑的关联,我该如何编写适当的ActiveRecordy方法呢?我一直在玩.joins(),但我找不到任何使用.joins而没有现有关联的例子.我不想创建关联的主要原因是在Sku上有20个关联,而在Item上有更多关联,复制它们似乎很愚蠢,因此只是为了优化一个查询而混淆真正的关联.

activerecord ruby-on-rails

3
推荐指数
1
解决办法
6018
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1