Ruby on rails Rails从表中选择所有用户,其中

Ruby on rails Rails从表中选择所有用户,其中,ruby-on-rails,Ruby On Rails,我试图从联接表中选择所有用户,但无法正确获取查询。 我的模型是用户模型和目标模型,它们通过参与者连接在一起。我需要列出目标id=x的所有参与者的用户 @participants = User.joins(:participations).where(goal_id: @goal.parent_id) 这是不正确的,因为我没有得到这样的列:users.goal\u id:。我不知道如何从联接表中选择所有用户 当我出于某种原因不尝试使用目标父id时,我可以使用@participants=@goal

我试图从联接表中选择所有用户,但无法正确获取查询。 我的模型是用户模型和目标模型,它们通过参与者连接在一起。我需要列出目标id=x的所有参与者的用户

@participants = User.joins(:participations).where(goal_id: @goal.parent_id)
这是不正确的,因为我没有得到这样的列:users.goal\u id:。我不知道如何从联接表中选择所有用户

当我出于某种原因不尝试使用目标父id时,我可以使用
@participants=@goal.participants
。当我在这里执行此操作时,我得到一个
无法找到目标的ID
错误。我对这两个问题的解决方案都很满意

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

User.rb

参与.rb


“目标id”列出现在“参与者”表中,所以您需要使用以下查询

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

请发布您的模型。更新模型。非常感谢!
  has_many :participations, dependent: :destroy
  has_many :participant_goals, through: :participations, :source => :goal
  belongs_to :user
  belongs_to :goal
@participants = User.joins(:participations).where('participations.goal_id = ?', @goal.parent_id)