2

RailsActiveRecordグループクエリがあります。

a = Product.select("date(date) as date, count(id) as products").group("date(date)").to_a 

配列内のすべての日付の形式を変更したいと思います。私はそれがこのようなものになるだろうと思いました:

a.map { |s, i| [Date.parse(s).to_time.strftime("%Y-%m-%dT%H:%M:%S"), i] }

ただし、can't convert Product into Stringエラーが発生します。配列内の日付を解析して形式を変更するにはどうすればよいですか?

編集:

これが私が探している出力の例です。

この表を考えると:

 create_table :products do |t|
       t.date :date
 end

最終的には、上記のグループクエリに基づいてjson出力を作成したいと思います。何かのようなもの:

 [{"products":23,"date":"2012-06-15T00:00:00"}, {"products":26,"date":"2012-06-16T00:00:00"}] 
4

2 に答える 2

3

これを試して:

a.map { |s, i| [Date.parse(s.date).to_time.strftime("%Y-%m-%dT%H:%M:%S"), i] }

クエリは、Product2つの偽のフィールドdateproducts(SQLクエリと同じ)を持つオブジェクトの配列を返します。日付を取得するにs.dateは、返された配列の要素を呼び出す必要があります。

編集

目的の配列を取得するには、次のようにします。

query_result = Product.select("date(date) as date, count(id) as products").group("date(date)")

query_result.map do |row| 
  { :products => row.products, :date => Date.parse(row.date).to_time.strftime("%Y-%m-%dT%H:%M:%S") }
end
于 2012-07-01T11:42:01.437 に答える
0

ActiveRecord :: RelationshipをJSON(a.to_json)にシリアル化し、JSONシリアライザーに日付のフォーマットを処理させてみませんか?

Product.select("date(date) as date, count(id) as products").
  group("date(date)").to_json
于 2012-07-01T15:10:26.797 に答える