如何从SQL查询返回的Ruby对象中检索列数据?

时间:2018-12-05 15:16:08

标签: ruby-on-rails ruby

 sql = "Select * from clients where id=1"
        records_array = ActiveRecord::Base.connection.execute(sql)
       puts(records_array.id)

即使查询中应包含具有ID的对象,我也会收到错误消息

NoMethodError(#的未定义方法'id'):

2 个答案:

答案 0 :(得分:0)

您对哈希执行方法.id(返回ActiveRecord::Base.connection.execute(sql)),哈希实例没有此方法。 此方法将为您返回一个sql结果,您可以访问执行以下内容的客户端属性:

records_array.first

这将为您返回找到的客户端的属性数组:

[1, 'Client name', 'Client birthday']

如果您使用.find,我强烈建议您使用类Client中的ActiveRecord方法

答案 1 :(得分:0)

始终尝试猜测哪种方法可以为您提供帮助。当您编写record_arrays.methods时,它会返回可以帮助您的可用方法的列表。例如,records_array.column_values(0)将返回第一列中的所有值,在这种情况下,可能是所有客户端ID的列表,另一种方法是records_array.values。您可以检查哪种方法可以帮助您。