如何从指定Rails Active Record查询中获取所有猫咪ID?
获取关联查询中的猫咪ID
模型关联关系
- User 拥有多个 Cat
- Vaccinations 拥有多个 Cat
- Cat 属于 Vaccination
- 命名空间下的
User::CatRecords模型属于 Cat
当前尝试的查询
User::CatRecords.joins(cat: :vaccinations).merge(Cat.vaccinated)
实现方法
要提取该查询中所有猫咪的ID,有两种常用方式:
方式1:直接提取cat_id字段
利用pluck方法直接获取User::CatRecords表中的关联猫咪ID:
User::CatRecords.joins(cat: :vaccinations).merge(Cat.vaccinated).pluck(:cat_id)
方式2:从关联的Cat表提取ID(去重)
如果同一只猫咪对应多条CatRecords记录,可通过distinct避免返回重复ID:
User::CatRecords.joins(cat: :vaccinations).merge(Cat.vaccinated).pluck('DISTINCT cats.id')
也可以用更清晰的链式写法:
User::CatRecords.joins(cat: :vaccinations) .merge(Cat.vaccinated) .select('cats.id') .distinct .pluck('cats.id')
内容的提问来源于stack exchange,提问作者Manav
相关产品推荐
相关产品推荐

