如果条纹

时间:2016-04-30 06:59:48

标签: ruby-on-rails ruby ruby-on-rails-4 stripe-payments

我正在迭代stripe charge object,我想总结每天的amount总数。

# Returns an array object of charges for a customer
@customer_charges = Stripe::Charge.all(:customer => current_user.stripeid)

查看:

<% @customer_charges.map do |c| %>
  On Monday, you were charged a total of <%= c.amount %>
<% end %>

上述情况肯定只是每笔费用的输出线,而不是当天的总和。我面临的困难是总结每一天的所有费用。有人能指出我正确的方向吗?

输出如下:

"On Monday, you were charged a total of 200000"
"On Tueesday, you were charged a total of 500000"
etc...

代替:

On Monday, you were charged a total of 100000"
On Monday, you were charged a total of 100000"
etc...

我的view看起来很混乱if statements行来比较日期,看起来不对。

1 个答案:

答案 0 :(得分:2)

您需要遍历Stripe中的每个费用对象,存储每笔费用的金额和解析日期:

# Fetch charges in batches of 100 records from Stripe API, yield each individual charge to a block.
def each_stripe_charge_for_customer(customer_id)
  starting_after = nil
  loop do
    customer_charges = Stripe::Charge.all(customer: customer_id, limit: 100, starting_after: starting_after)
    break if customer_charges.none?
    charges.each do |charge|
      yield charge
    end
    starting_after = charges.data.last.id
  end
end

charges_by_date = Hash.new(0)

# For each Stripe charge, store the date and amount into a hash.
each_stripe_charge_for_customer(current_user.stripeid) do |stripe_charge|
  # Parses Stripe's timestamp to a Ruby date object. `to_date` converts a DateTime object to a date (daily resolution).
  charge_date = Time.at(stripe_charge.created).to_date
  charge_amount = stripe_charge.amount

  charges_by_date[charge_date] += charge_amount
end