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

Rails中基于has_many与belongs_to关联查询含至少一个机构的城市

获取至少拥有一个机构的城市查询方法

在Rails中,针对你的City和Institution(注:模型名通常采用单数形式,建议将institutions模型改为Institution)的关联关系,有几种简洁高效的写法来筛选出至少拥有一个机构的城市:

  • 内连接去重法(推荐,性能最优)
    利用joins做内连接,自动排除没有关联机构的城市,再用distinct避免同一城市因关联多个机构而重复出现:

    @cities = City.joins(:institutions).distinct
    
  • Exists子查询法(语义清晰)
    通过EXISTS子查询直接判断城市是否存在关联机构,可读性更强:

    @cities = City.where.exists?(institutions: { city_id: :id })
    
  • 左连接过滤法
    先做左连接保留所有城市,再过滤掉没有关联机构的记录,最后去重:

    @cities = City.left_outer_joins(:institutions).where.not(institutions: { id: nil }).distinct
    

内容的提问来源于stack exchange,提问作者Lucas Fernando

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:05:23