我正在尝试与Ruby Stripe库进行交互,特别是如下所述的subscription_update函数:https://stripe.com/docs/api#update_subscription
语法如下:
c = Stripe::Customer.retrieve("cus_2BWdBuTAE3HboP")
c.update_subscription(:plan => "basic", :prorate => true)
我正在实现一个可以与ruby库连接的rails模型。由于这个api将使用nil值更新我的订阅(这将超过默认值),我需要一个函数来抓取可写属性并创建一个只包含我可以传递给此update_subscription函数的nil属性的数组。
这就是我现在所拥有的:
def get_non_nil_update_attributes
attributes = Array.new([ :plan, :trial_end, :quantity, :coupon, :prorate ])
return_attributes = {}
attributes.each do |attribute|
if !self.send( attribute ).nil?
return_attributes[attribute] = self.send( attribute)
end
end
return return_attributes
end
我想称之为:
c.update_subscription( mymodel.get_non_nil_update_attributes )
但是我得到一个错误,我没有通过计划参数。在控制台我输出如果此功能是:
[{:plan=>"7"}, {:trial_end=>"bla"}]
我知道这是一个简单的红宝石问题,但我如何才能完成此输出
:plan => "7", :trial_end => "bla"
传递给我的函数?
答案 0 :(得分:0)
get_non_nil_update_attributes
无法返回您帖子中存在的数组,因此还会发生其他事情。
顺便说一下,你可以简单地简化这个方法:
def get_non_nil_attributes(attributes = [:plan, :trial_end, :quantity, :coupon, :prorate])
all_attributes = Hash[*attributes.zip(attributes.map {|a| send a})]
all_attributes.select {|k, v| v.present? }
end