包含has_many的列

san*_*ius 3 postgresql activerecord ruby-on-rails

我有三个型号User,TeamMembership.在成员模型中,有一个字段,角色,用于存储当前团队的用户角色.

当一个团队有很多用户并且我列出它们并且还显示团队的用户角色时,我的查询计数当然会爆炸.

有没有办法加载所有Team用户并包含Membership模型中的角色列?

User
has_many :memberships, dependent: :destroy
has_many :teams,       through: :memberships 

Team
has_many :memberships, dependent: :destroy
has_many :users,       through:   :memberships

Membership
belongs_to :user
belongs_to :team
Run Code Online (Sandbox Code Playgroud)

小智 5

我相信这会奏效

team = Team.first #for example
users = team.users.select("*, memberships.role AS role")
Run Code Online (Sandbox Code Playgroud)

所以每个用户都会获得角色

users.first.role
Run Code Online (Sandbox Code Playgroud)