ActiveRecord 查询其中 id 丢弃破折号后的内容

问题描述

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

解决方法

id 字段可能是整数类型,因此 ActiveRecord 基本上通过调用 to_i 将参数转换为整数:

 '121-fake'.to_i # -> 121