升级到 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')
我想这会起作用。
在我的应用程序中将 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')
我想这会起作用。