Я пытаюсь выполнить replicate this с запросом базы данных Rails, но не имеет большой удачи.Сумма всех сумм, если created_at совпадают в Rails
Мой Foo
стол имеет много столбцов, но меня интересуют created_at
и amount
.
Foo.all.where(client_id: 4)
выглядит следующим образом:
[
[0] {:created_at => <date>, :amount => 20},
[1] {:created_at => <different date>, :amount => 5},
...
]
Stripe Charge Object в формате JSON, поэтому я думал, что я мог бы:
f = Foo.all.where(client_id: 4).as_json # could I?
Во всяком случае, мой контроллер:
# 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
Моя ошибка в строка 50:
неопределенный метод `created_at» для Hash
Я предполагаю, что объект все еще находится в массиве где-то. Кроме того, существует ли эквивалент JS console.log()
в Rails? Было бы удобно.
Ahh thanks. Im теперь получает 'undefined method' [] 'для Sun, 01 мая 2016 07:07:35 UTC +00: 00: Time', когда я использую' pluck'. – Sylar
На той же строке, что и ваша первая ошибка? –
Позвольте мне проверить все. – Sylar