0
我有一个Rails应用程序,带有一个复杂的查询,我似乎无法解决。我有2桌,俱乐部和选择。表俱乐部就是这样的:复杂的左外连接查询
id,name
1,A
2,B
3,C
4,D
表选择由所有用户包含表俱乐部选择俱乐部:
id,club_id,user_id
1,1,1
2,1,2
3,2,3
4,3,1
5,3,3
现在我想从表俱乐部的所有项目,而不元素的选择框已经由当前用户选择(他不能选择同一个俱乐部两次)。因此,在用户1的情况下,它应该只表现出俱乐部B和d,因为他已经选择了A和C.
所以我创造了这个作为模型范围:
scope :selectable, ->(current_user) {
joins('LEFT OUTER JOIN selections ON selections.club_id = clubs.id').
where('selections.id IS NULL OR selections.user_id != ?', current_user.id).
group('clubs.id')
}
该作品当只有一个用户进行选择时很好,但如果更多用户选择与当前用户相同的俱乐部,这些俱乐部仍然显示出来。我可以改进什么以显示正确的俱乐部?
我不知道关于“优雅”,但是这是我会怎么做,对于当然。 – MrTheWalrus