gpt4 book ai didi

ruby-on-rails - Rails find_by_sql - 从字面上使用 "?"而不是作为绑定(bind)变量?

转载 作者:行者123 更新时间:2023-12-04 05:49:39 26 4
gpt4 key购买 nike

在下面,我想要第一个 ?按字面意思使用,只有第二个 ?应该用作绑定(bind)变量标记:

Foo.find_by_sql ["select IFNULL(col,'?') from foos where id = ?",1]

这个错误:

wrong number of bind variables (1 for 2)



我将如何逃脱第一个 ?所以从字面上看?

最佳答案

ActiveRecord 不够聪明,无法忽略字符串文字中的占位符,因此它认为 ?'?'是占位符而不是字符串的一部分。解决此问题的最简单方法是使用命名占位符:

Foo.find_by_sql ["select IFNULL(col, '?') from foos where id = :id", :id => 1]

当 ActiveRecord 在数组的第二个元素中看到 Hash 时,它将查找命名占位符(使用 Ruby 符号表示法)而不是位置 ?占位符。我倾向于倾向于命名占位符时期,因为它们更具可读性和更健壮。

关于ruby-on-rails - Rails find_by_sql - 从字面上使用 "?"而不是作为绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com