Ruby mysql2 gem查询字符串插值

Ruby mysql2 gem查询字符串插值,mysql,ruby,mysql2,Mysql,Ruby,Mysql2,我有一个数据库表数据 data, TEXT source, VARCHAR(20) count, INT 我正在使用mysql2gem,并尝试以下方式将数据插入此表: def insert(data, source, count=0) result = client.query( "INSERT INTO data (data, source, count) VALUES ('#{client.escape(data)}', '#{client.escape(sourc

我有一个数据库表数据

data, TEXT
source, VARCHAR(20)
count, INT
我正在使用
mysql2
gem,并尝试以下方式将数据插入此表:

def insert(data, source, count=0)
    result = client.query(
        "INSERT INTO data (data, source, count) VALUES ('#{client.escape(data)}', '#{client.escape(source)}', #{count})"
    )
end
这会产生以下错误:
没有将符号隐式转换为整数(TypeError)

我知道密码有问题,但我想知道两件事。我如何使它工作,有没有更干净的方法来构建这个查询字符串?比如:

query_s = "INSERT INTO data (data, source, count) VALUES (?,?,?)", [data, source, count]
client.query(query_s)

没有足够的信息来调试到底发生了什么,我想你指的是“插值”而不是“外推”。但我建议您使用mysql2适配器,而不是直接使用原始mysql2适配器。续集将给你一个更干净的方式来做这件事。我不知道mysql2适配器中是否直接存在一个。mysql2适配器直接是相当低级的,你会很高兴它包装在Sequel中。我100%支持@jrochkind。与MySQL驱动程序的接口非常难看,而且充满了问题。使用像Sequel或ActiveRecord这样的数据库层,您的生活会轻松得多。该驱动程序是为那些正在编写Sequel或ActiveRecord之类的东西的人提供的,不打算直接使用。我现在已经可以使用了。我使用了Sequel,cool gem,顺便说一句。显然问题在于调用方法
insert(数据、源、我的散列[:计数])
。我不知道Ruby不能处理这样的参数。Ruby可以处理这样的参数。这取决于您调用的#insert方法所期望的参数位置和类型,而不是您给出的参数。