我正在尝试从联接表中选择所有用户,但我无法正确查询。 我的模型是用户和目标,由参与者加入。我需要列出目标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
答案 0 :(得分:1)
goal_id列出现在参与表中,因此您需要使用以下查询
creditCostArray