0

ユーザーが製品 (またはサブスクリプション) をカートに追加できる小さなアプリに取り組んでいます。アカウントを作成すると、新しいユーザーは「バンドル」ページに送られ、別の製品に別のサブスクリプションをまとめてバンドル価格で追加するかどうかを尋ねられます。

ここで行き詰まっています:ユーザーのクレジットカード情報を送信すると、バンドル価格を設定してAuthorize.netに送信しようとすると、「翻訳に迷い」ます(ここでの質問ではなく、authnetの方法を理解しています)。

これが私がこれまでに持っているものです:

current_order.products.includes(:client).each do |product|
          transaction = current_order.submit_order_to_authnet(product)

            if transaction.result_code == 'Ok'
          new_group = Group.create!(:name => "#{current_user.full_name} #{product.title}", :type => 'school', :start_date => Time.now, :status => 'active', :site_id => 1)
          primary = session[:primary_product_id].eql?(product.id) ? true : false

          # Add subscription to Group
          new_group.add_subscription(product, current_order, transaction.subscription_id, 'active', primary)
          # Add Subscription to CurrentOrder
          current_order.subscriptions << new_group.subscriptions.last
          # Add user to NewGroup
          current_user.groups << new_group
          # Create New Group Admin
          new_group.group_admins.create(:user_id => current_user.id)
          # Send success email
          OrderMailer.checkout_confirmation(current_user).deliver
        else
          errors << transaction.result_code
        end
      end

current_orderユーザーのカート内の 2 番目のサブスクリプションは割引が適用されるサブスクリプションであるため、ユーザーの各製品をループする際に最適なソリューションを見つけようとしています。私はこのようなものを書くことができることを知っています:

current_order.products.includes(:client).each do |product|
    if current_order.products.many? and product == current_order.products.last
        # run discount logic
    else
        # continue with authnet for single subscription
    end
end

しかし、それがベストプラクティスであるかどうかはわかりません。考え?

4

1 に答える 1

1

割引されないサブスクリプションは最初のサブスクリプションだけですか? 次のように書いてみませんか。

current_order.products.includes(:client).each do |product|
  if product == current_order.products.first
    # continue with authnet for single subscription
  else
    # run discount logic
  end
end
于 2012-08-23T20:45:41.540 に答える