Jean Boussier 6a57264758 Allow to update a resource without retreiving it first
Rationale:

  Sometime you don't care about the current state of a resource
  you just want to update one of it's attributes.
  It should only require one request.

fixes #52

```ruby
  c = Stripe::Customer.new("cus_1EqKjPaFs4ZwDD")
  c.description = 'Ny new Description'
  c.save
```

Before:

```json
{
  error: {
    type: "invalid_request_error",
    message: "A parameter provided in the URL (id) was repeated as a GET or POST parameter. You can only provide this information as a portion of the URL.",
    param: "id",
  }
}
```

After:

Successfully update the customer and return it's whole state.
2013-03-14 11:04:18 -04:00

17 lines
391 B
Ruby

module Stripe
module APIOperations
module Update
def save
if @unsaved_values.length > 0
values = {}
@unsaved_values.each { |k| values[k] = @values[k] }
values.delete(:id)
response, api_key = Stripe.request(:post, url, @api_key, values)
refresh_from(response, api_key)
end
self
end
end
end
end