0

ルビーストライプ

Ruby Stripe ライブラリ、特にここに記載されている subscription_update 関数とのインターフェイスを試みています: https://stripe.com/docs/api#update_subscription

構文は次のようになります。

c = Stripe::Customer.retrieve("cus_2BWdBuTAE3HboP")
c.update_subscription(:plan => "basic", :prorate => true)

Rails モデルの実装

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"、関数に渡すためだけにこの出力を作成するにはどうすればよいですか?

4

1 に答える 1

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
于 2013-07-13T20:06:53.050 に答える