【发布时间】:2014-05-22 17:42:02
【问题描述】:
如果我有一个带有 id(integer) 的 users 表,并且我尝试使用 arel 构建一个 sql 查询,我会得到这个。
users = Arel::Table.new(:users)
users.where(users[:id].matches("foo")).to_sql #=> "SELECT FROM `users` WHERE `users`.`id` LIKE 0"
我需要生成这个 sql:
"SELECT FROM `users` WHERE `users`.`id` LIKE 'foo'"
我感觉引擎盖下有某种不需要的类型转换位置。
更新:
我终于通过使用 Arel::Nodes::SqlLiteral 类的实例解决了这个问题。
str = Arel::Nodes::SqlLiteral.new("'foo'")
users.where(users[:id].matches(str)).to_sql #=> "SELECT FROM `users` WHERE `users`.`id` LIKE 'foo'"
【问题讨论】:
标签: mysql ruby-on-rails arel