包含has_many的列

时间:2012-08-31 06:39:09

标签: ruby-on-rails postgresql activerecord

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

当一个团队获得了大量用户并且我列出了这些用户并且还显示了该团队的用户角色时,我的查询计数当然会爆炸。

有没有办法加载所有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

1 个答案:

答案 0 :(得分:5)

我相信这会有用

team = Team.first #for example
users = team.users.select("*, memberships.role AS role")

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

users.first.role