我们将数据库从sqlite3迁移到postgreSQL。现在,在以下行中,我们收到错误:
def self.get_table_id(id)
sql = "SELECT id FROM configtables WHERE parent = 'check' AND parentid = " + id.to_s
results = connection.execute(sql)
return nil if results.empty? # here's where the error happens
return results[0][0]
end
我对Ruby和ActiveRecords以及postgreSQL的了解较少。 results
中的值是postgres-object
,还是#<PG::Result:0x007fcc82900a78>
以及sqlite3
数据库中的值是什么?
此函数是少数具有原始sql-strings的函数之一。
答案 0 :(得分:3)
empty?
未定义为PG::Result
:
PG::Result.instance_methods.include?(:empty?)
#=> false
要使用empty?
,您应该将结果转换为Array的实例:
results.to_a.empty?
答案 1 :(得分:2)
好像你应该从PG::Result
对象“获取”实际结果
一种方法是调用to_a
尝试以下方法:
sql = "SELECT id FROM configtables WHERE parent = 'check' AND parentid = " + id.to_s
results = ActiveRecord::Base.connection.execute(sql).to_a
...