显示并计数联想

时间:2018-07-18 06:53:34

标签: ruby-on-rails ruby devise associations relationship

我想计算属于一个项目团队的用户数量。关联如下:

user belongs_to :team
team has_many :users
project has_many :teams
team belongs_to :project

在projects / show.html.erb中,我使用以下代码来计算属于项目的所有团队的用户总数

<h2 class="number"><%= @project.teams.users.count %></h2>

我收到的错误是:undefined method 'users'。我也在用Devise 若要工作,是否需要project_controller.rb中的方法?

2 个答案:

答案 0 :(得分:0)

当您执行@project.teams时,它将返回一个数组作为团队列表,因为一个项目有很多团队,因此可以找出该项目中第一个团队的用户数量

@project.teams.first.users.count

或者您需要找到所需的团队,然后对此进行.users.count

答案 1 :(得分:0)

由于不清楚,您确切想知道的是什么,这是我的最佳答案。

您可以为模型Project添加新的has_many :through关联,以获取项目中所有用户的数量。

class User
  belongs_to :team
end

class Team
  belongs_to :project
  has_many :users
end

class Project
  has_many :teams
  has_many :users, through: :teams   # <--- New association
end

project = Project.find(<project_id>)

# Get the count of all users in a project
project.users.count

# Get the count of users in a team
team = project.teams.find(<team_id>)   # Or `Team.find(<team_id>)`
team.users.count