【问题标题】:How to retrieve column data from ruby object returned from sql query?如何从 sql 查询返回的 ruby​​ 对象中检索列数据?
【发布时间】:2018-12-05 23:34:10
【问题描述】:
 sql = "Select * from clients where id=1"
        records_array = ActiveRecord::Base.connection.execute(sql)
       puts(records_array.id)

即使查询应该包含具有 id 的对象,我也会收到错误

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

【问题讨论】:

  • 为什么在这种情况下使用SQL?你可以简单地使用Client.find(1)

标签: ruby-on-rails ruby


【解决方案1】:

总是试着猜测什么方法可以帮助你。当您编写record_arrays.methods 时,它会返回一个可以帮助您的可用方法列表。例如,records_array.column_values(0) 它将返回第一列中的所有值,在这种情况下可能是所有客户端 ID 的列表,另一种方法是 records_array.values。你可以看看有什么方法可以帮到你。

【讨论】:

    【解决方案2】:

    您为哈希执行方法.idActiveRecord::Base.connection.execute(sql) 的返回),哈希实例没有此方法。 该方法会为你返回一个 sql Result,你可以访问执行的客户端属性:

    records_array.first
    

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

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

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

    【讨论】:

    • 不,返回的是 SqlAdapter::Result。假设他使用mysql,结果将是:Mysql2::Result:0x00000004be4b60
    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 2014-12-16
    • 2021-01-07
    • 2013-05-06
    • 2015-09-25
    • 2021-02-16
    • 2016-09-28
    • 2010-12-08
    相关资源
    最近更新 更多