chb*_*bla 3 postgresql activerecord ruby-on-rails
我正在执行一个查询,ActiveRecord::Base.connection.exec_query()但继续将整数作为字符串获取,如下所示:
ActiveRecord::Base.connection.exec_query(query)
#<ActiveRecord::Result:0x0000000674e248
@column_types=
{"date"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Date:0x000000067a4c60 @limit=nil, @precision=nil, @scale=nil>,
"property_id"=>#<ActiveRecord::Type::String:0x0000000b316090 @limit=nil, @precision=nil, @scale=nil>,
"property_name"=>#<ActiveRecord::Type::String:0x0000000b316090 @limit=nil, @precision=nil, @scale=nil>,
"subgroup_name"=>#<ActiveRecord::Type::String:0x0000000b316090 @limit=nil, @precision=nil, @scale=nil>,
"channel_id"=>#<ActiveRecord::Type::String:0x0000000b316090 @limit=nil, @precision=nil, @scale=nil>,
"eligible_impressions"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"estimated_impressions"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"impressions"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"estimated_clicks"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"imported_clicks"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"estimated_costs_eur"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Decimal:0x00000017052ff0 @limit=nil, @precision=nil, @scale=nil>,
"imported_costs_eur"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Decimal:0x00000017052ff0 @limit=nil, @precision=nil, @scale=nil>,
"booking_count"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer:0x0000000b316bf8 @limit=nil, @precision=nil, @range=-2147483648...2147483648, @scale=nil>,
"booking_revenue_eur"=>#<ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Decimal:0x0000000b316658 @limit=nil, @precision=nil, @scale=nil>},
@columns=
["date",
"property_id",
"property_name",
"subgroup_name",
"channel_id",
"eligible_impressions",
"estimated_impressions",
"impressions",
"estimated_clicks",
"imported_clicks",
"estimated_costs_eur",
"imported_costs_eur",
"booking_count",
"booking_revenue_eur"],
@hash_rows=nil,
@rows=[["2017-11-13", "CHILD", "childname", "unitname", "Google", nil, nil, "300", "0", nil, "0.00000", nil, "0", "0.00"]]>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何获得正确的类型,因为此信息已包含在结果对象中?
数据库是 Postgres - 我记得我用 mysql 没有这个问题。Rails 仍然是 4.2.4
在 Rails 4.2 上,您可以cast_values从ActiveRecord::Result 使用
ActiveRecord::Base.connection.exec_query(query).cast_values
Run Code Online (Sandbox Code Playgroud)
Rails 5 将返回文档中突出显示的强制转换值:
# Get the record values of the result:
result.rows
# => [[1, "title_1", "body_1"],
[2, "title_2", "body_2"],
...
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |