ActiveRecord :: Base.connection.execute(sql)。还不返回数据

时间:2016-07-11 12:36:02

标签: ruby-on-rails postgresql activerecord

作为我正在进行的API应用程序的一部分,需要进行身份验证才能进行调用。我正在尝试使用curl命令进行最基本的调用,包括头基本身份验证。在用户尝试访问任何安全呼叫时调用的authenticate块中,有以下代码:

unless credential = cache.fetch("credential::#{auth.credentials[0]}:#{Digest::MD5.hexdigest(auth.credentials[1])}")
  sql = "SELECT * FROM credentials WHERE username = '#{auth.credentials[0]}' AND passwd_hashed = '#{Digest::MD5.hexdigest(auth.credentials[1])}'"
  ActiveRecord::Base.connection.execute(sql).each do |row|
    credential = row
  end
end

由于某种原因,这不会返回任何结果。我已经从这个块输出了sql并在postgres中运行它返回所需的行。我测试了我的环境,以确保我连接到正确的数据库。除此之外,我不确定问题是什么或如何诊断它。任何帮助将不胜感激。

关于如何从此块返回错误的任何建议也会有很大帮助。尝试添加异常处理,但似乎无法使语法正确。

1 个答案:

答案 0 :(得分:3)

你可以在rails console中运行吗?你有结果吗?

result = ActiveRecord::Base.connection.execute(sql)
result.to_a