Rails中基于has_many与belongs_to关联查询含至少一个机构的城市
获取至少拥有一个机构的城市查询方法
在Rails中,针对你的City和Institution(注:模型名通常采用单数形式,建议将institutions模型改为Institution)的关联关系,有几种简洁高效的写法来筛选出至少拥有一个机构的城市:
内连接去重法(推荐,性能最优)
利用joins做内连接,自动排除没有关联机构的城市,再用distinct避免同一城市因关联多个机构而重复出现:@cities = City.joins(:institutions).distinctExists子查询法(语义清晰)
通过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
相关产品推荐
相关产品推荐

