首页 > 解决方案 > ActiveRecord 查询其中 id 丢弃破折号后的内容

问题描述

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

标签: activerecordruby-on-rails-5ruby-on-rails-6

解决方案


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

 '121-fake'.to_i # -> 121

推荐阅读