【发布时间】:2009-12-29 00:46:56
【问题描述】:
我正在执行由用户输入动态创建的自定义 find_by_sql 查询。查找 find_by_sql 返回的字段名称的最佳方法是什么
我尝试过使用列、列名和键方法,但都没有。
ActiveRecord 结果是散列还是数组?
例如
@fm_reports = FmReport.find_by_sql(crosstab_query)
field_names = @fm_reports.keys (or .columns or .column_names)
干杯,基思
更新 ::
似乎除非您在 find_by_sql 中执行“select * from ....”,否则它不会返回属性名称
>> FmReport.find_by_sql("select object_class, alarm_mr from fm_reports limit 1")
=> [#<FmReport >]
>> FmReport.find_by_sql("select * from fm_reports limit 1")
=> [#<FmReport id: 7, ALARM_DN: "PLMN-PLMN/BSC-31569/TCSM-72", ALARM_OBJECT: "MELB_BSC1", ALARM_MR: "VIC_METRO", PARENT_DN: "PLMN-PLMN/BSC-31569", PARENT_CLASS: "BSC", OBJECT_CLASS: "TCSM", ALARM_NUMBER: "2955", ALARM_TIME: "21/12/2009 11:02:19", CANCEL_TIME: "21/12/2009 11:03:27", SEVERITY: "2", created_at: nil, updated_at: nil>]
【问题讨论】:
-
好吧,现在我真的很困惑,如果我使用在表中创建的字段名称(即在本例中为大写 - OBJECT_CLASS),它将返回属性名称。但是我的查询无法做到这一点,所以我想我已经吃饱了。
-
在您的示例中,您不需要使用 find_by_sql 。请参阅我的更新答案。您能否更具体地了解您需要的查询?
标签: ruby-on-rails activerecord