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

如何用Active Record Query查询current_user的粉丝列表?

获取当前用户的粉丝列表解决方案

模型与现有关联

模型结构

  • User 模型
  • Followed 模型,核心字段:
    • user_id:发起关注操作的用户ID(即粉丝的ID)
    • followed_id:被关注的用户ID

现有关联代码

User 模型

has_many :followeds, foreign_key: :followed_id, dependent: :destroy

Followed 模型

belongs_to :user

实现方案

直接查询方式

你之前的代码接近正确,但需要明确关联users表和followeds表的对应关系(粉丝的ID等于followeds.user_id),可以通过显式JOIN语句实现:

@followers = User.joins("JOIN followeds ON users.id = followeds.user_id")
                 .where(followeds: { followed_id: current_user.id })

优雅优化:新增关联

为了后续代码更简洁,建议在User模型中添加一个粉丝关联:

# 在 User 模型中新增
has_many :followers, through: :followeds, source: :user

之后获取粉丝列表只需直接调用:

@followers = current_user.followers

逻辑说明

  • 原User模型的followeds关联,是将当前用户作为被关注者(通过foreign_key: :followed_id关联到followeds.followed_id)
  • 新增的followers关联通过through: :followeds,借助source: :user指定关联到发起关注的用户(即followeds.user_id对应的User记录),直接获取所有关注当前用户的粉丝

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:15:50