带有 id 的 ActiveRecord 查询丢弃破折号后的内容

ActiveRecord query where with id discards the content after dash

我刚刚在 where 方法中遇到了一些令人惊讶的事情。当我查询类似 MyModel.where(id: '121-fake') 的内容时,它会在 SQL 中转换为 id = 121,即 ActiveRecord 似乎删除了破折号之后的内容。这似乎只在我使用 id 查询时发生。谁能帮我指出这是在哪里实施的?谢谢

id字段可能是整数类型,所以ActiveRecord基本上通过调用to_i:

将参数转换为整数
 '121-fake'.to_i # -> 121