我刚刚在使用 where 方法时遇到了一些令人惊讶的事情。当我查询 MyModel.where(id: '121-fake') 之类的内容时,它会在 sql 中转换为 id = 121,即 ActiveRecord 似乎删除了破折号之后的内容。这似乎只发生在我使用 id 查询时。谁能帮我指出这是在哪里实施的?谢谢。
where
MyModel.where(id: '121-fake')
id = 121
id
id 字段可能是整数类型,因此 ActiveRecord 基本上通过调用 to_i 将参数转换为整数:
ActiveRecord
to_i
'121-fake'.to_i # -> 121