首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord ( Rails ):如何在没有关联的情况下在Rails中进行自定义(SQL)连接?

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

Stack Overflow用户
提问于 2013-12-13 01:36:49
回答 1查看 9.5K关注 0票数 6

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

代码语言:javascript
复制
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)

我可以在Rails中用下面的代码来接近它:

代码语言:javascript
复制
ItemToSku.includes(:sku => :inventory).find_all_by_item_id([12345, 67890])

但这毫无意义地将SKU表包含在其中。因为ItemToSku和Inventory都有一个sku_id,所以我想直接将它们连接在一起,就像上面的SQL版本一样。

在不向我的多对多表格模型(ItemToSku)添加令人困惑的关联的情况下,我如何才能编写一种适当的ActiveRecordy方式来实现这一点?我一直在尝试使用.joins(),但我找不到任何没有现有关联的使用.joins的示例。我不想创建关联的主要原因是,Sku上有大约20个关联,而Item上有更多的关联,复制它们并因此将真正的关联云起来只是为了优化一个查询,这似乎很愚蠢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 02:01:56

joins可以通过多种方式使用。

i.加入协会

  1. Single
  2. Multiple
  3. Nested

二、使用原始sql连接(这是您正在寻找的)

代码语言:javascript
复制
 ItemToSku.joins("LEFT JOIN inventory ON item_to_sku.sku_id = inventory.sku_id").where("item_id in (?)", [12345, 67890])

注意:includes用于急速加载

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20550348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档