整数的语法无效

时间:2016-11-16 02:02:37

标签: ruby-on-rails postgresql ruby-on-rails-4

我尝试在我的查询中使用Postgres匹配整数ID时收到此错误消息。

PG::InvalidTextRepresentation:ERROR: invalid input syntax for integer: "matches.team_id"

我已经建立了协会。

统计

belongs_to :player
has_many :matches, foreign_key: 'match_id', primary_key: 'match_id'

匹配

has_many :stats
has_many :players, through: :stats

统计控制器

@player = Player.find(params[:id])    
@stats = Stat.where("player_id = ?", @player.id).joins(:matches)
.where('stats.team_id = ?', 'matches.team_id').select('SUM(stats.goals) AS goals')

我的匹配数据库有两个match_id行相同,当我总结玩家目标时,它会找到玩家目标,但在显示时会加倍goals。所以我想如果我的查询声明只发现team_id的位置相同,那么每match_id只生成1个目标

匹配数据库

|id|match_id|team_id|total_score|
|10|  3433  |   1   |     3     |
|11|  3433  |   2   |     2     |

统计数据

|id|match_id|team_id|player_id|goals|
|12|  3433  |   1   |   333   |  1  |

1 个答案:

答案 0 :(得分:3)

改变这个:

where('stats.team_id = ?', 'matches.team_id')

到此:

where('stats.team_id = matches.team_id')

当您使用?替换时,您说的是?的数据应该被转义。它正在查看'matches.team_id'的类型,看到它是一个字符串,并将其包装在引号中。

可能有一种方法可以在不需要自定义where子句的情况下进行连接,但问题的根源是字符串转义机制。