Rails从表中选择所有用户

时间:2017-06-29 21:23:22

标签: ruby-on-rails

我正在尝试从联接表中选择所有用户,但我无法正确查询。 我的模型是用户和目标,由参与者加入。我需要列出目标id = x的参与者的所有用户。

@participants = User.joins(:participations).where(goal_id: @goal.parent_id)

这是不正确的,因为我得到no such column: users.goal_id:。我无法弄清楚如何从连接表中选择所有用户。

当我因某些原因不想使用目标父ID时,我可以使用@participants = @goal.participants。当我在这里执行此操作时,出现Couldn't find Goal without an ID错误。我很乐意解决这两个问题。

if @goal.parent_id?
  @parent_goal = Goal.find(params[@goal.parent_id])
  @participants = @parent_goal.participants
else
  @participants = @goal.participants
end

Goal.rb

  has_many :participations, dependent: :destroy
  has_many :participants, :through => :participations, :source => :user

User.rb

  has_many :participations, dependent: :destroy
  has_many :participant_goals, through: :participations, :source => :goal

Participation.rb

  belongs_to :user
  belongs_to :goal

1 个答案:

答案 0 :(得分:1)

goal_id列出现在参与表中,因此您需要使用以下查询

creditCostArray