升级到 Rails 4.2.0:where 条件中的字符串文字用引号引起来

Upgrade to Rails 4.2.0: string literals in where conditions wrapped into quotation marks

在我的应用程序中将 rails 版本从 4.1.8 升级到 4.2.0 期间,我遇到了以下问题。

where 条件中的字符串文字现在额外包含在引号中,这 然后成为查询字符串的一部分,不再提供有效结果。这仅发生在 text 类型的数据库字段中(varchar 字段不受影响)。我正在使用 MySQL 数据库。

> Table.where(column: 'data')
[08:19:20.822552] Table Load (0.3ms)  SELECT `table`.* FROM `table`
WHERE `table`.`column` = '\"data\"'

现在,如果您在列行中有包含 data 值的行,则此条件将不再匹配(显然,"data" 不再匹配)。

在 Rails 4.1.8 中一切正常:

 > Table.where(column: 'data')
 [08:19:58.303366] Table Load (0.4ms)  SELECT `table`.* FROM `table`
 WHERE `table`.`column` = 'data'

我不知道这是默认行为还是可配置行为。我不知何故还没有找到相应的发行说明。我将非常感谢任何关于更改内容以及修复它的最佳方法的建议。

非常感谢您的帮助!

你可以这样试试吗:

Table.where("column=?", 'data')

我想这会起作用。