Ich versuche replicate this mit der Rails-Datenbank (pg) Abfrage, aber nicht viel Glück.Summe aller Beträge, wenn die created_at-Daten in Rails gleich sind
Meine Foo
Tabelle hat viele Spalten, aber ich interessiere mich für created_at
und amount
.
Foo.all.where(client_id: 4)
sieht wie folgt aus:
[
[0] {:created_at => <date>, :amount => 20},
[1] {:created_at => <different date>, :amount => 5},
...
]
Stripe Charge Object in json ist so dachte ich, ich könnte:
f = Foo.all.where(client_id: 4).as_json # could I?
Wie auch immer, mein Controller:
# As per first link above
def each_user_foo
starting_after = nil
loop do
f = Foo.all.where(client_id: 4).as_json
#f_hash = Hash[f.each_slice(2).to_a] # I was trying something here
break if f.none?
f.each do |bar|
yield bar
end
starting_after = bar.last.id
end
end
foo_by_date = Hash.new(0)
each_user_foo do |f|
# Parses date object. `to_date` converts a DateTime object to a date (daily resolution).
amount_date = DateTime.strptime(f.created_at.to_s, "%s").to_date # line 50
amount = f.amount
# Initialize the amount for this date to 0.
foo_by_date[amount_date] ||= 0
foo_by_date[amount_date] += amount
end
Mein Fehler bei Linie 50 ist:
nicht definierte Methode `created_at‘ für Hash
Ich denke, ein Objekt irgendwo noch in einem Array ist. Gibt es auch eine Entsprechung für die JS console.log()
in Rails? Wäre praktisch.
Ahh danke. Ich bekomme jetzt eine undefinierte Methode '[] 'für Sun, 01 May 2016 07:07:35 UTC +00: 00: Zeit, wenn ich' pluck' benutze. – Sylar
In der gleichen Zeile wie Ihr erster Fehler? –
Lassen Sie mich alles doppelt überprüfen. – Sylar