You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails多表关联查询:获取指定vendor_id的关联表记录

获取指定Vendor的WarehouseIngredient和WarehouseIngredientLog记录

嘿,针对你的需求,有几种简洁的实现方式,你可以根据业务场景灵活选择:

方法1:通过Vendor关联获取(推荐,贴合Rails关联设计)

如果后续需要操作这个Vendor实例,直接利用模型间的关联关系就能轻松拿到数据:

# 先找到目标vendor
vendor = Vendor.find(1)

# 获取关联的所有WarehouseIngredient记录
warehouse_ingredients = vendor.warehouse_ingredients

# 获取关联的所有WarehouseIngredientLog记录
warehouse_ingredient_logs = vendor.warehouse_ingredient_logs

要是想避免后续访问关联时触发额外的数据库查询,可以提前预加载关联数据:

# 预加载两个关联表,总共只触发3次查询(1次查Vendor,2次查关联表)
vendor = Vendor.includes(:warehouse_ingredients, :warehouse_ingredient_logs).find(1)

方法2:直接查询模型(更直接,无需加载Vendor)

如果不需要用到Vendor对象,直接针对两个模型做条件查询就够了:

# 查询vendor_id=1的所有WarehouseIngredient
warehouse_ingredients = WarehouseIngredient.where(vendor_id: 1)

# 查询vendor_id=1的所有WarehouseIngredientLog
warehouse_ingredient_logs = WarehouseIngredientLog.where(vendor_id: 1)

要是想把两个结果整合到一起方便后续处理,可以放到一个哈希里:

combined_results = {
  warehouse_ingredients: WarehouseIngredient.where(vendor_id: 1),
  warehouse_ingredient_logs: WarehouseIngredientLog.where(vendor_id: 1)
}

两种方法都能满足需求:如果后续要用到Vendor的其他属性,方法1更顺手;如果只需要这两个表的数据,方法2会更高效。

内容的提问来源于stack exchange,提问作者Qaiser Wali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:04:32