我正在开发一个允许用户将产品(或订阅)添加到他们的购物车的小应用程序。创建帐户后,新用户将被发送到“捆绑”页面,在该页面询问他们是否愿意以捆绑价格为不同的产品添加不同的订阅。
这是我卡住的地方:在提交用户的信用卡信息时,我在尝试设置捆绑定价以提交给 Authorize.net 时略微“迷失在翻译中”(我了解如何进行身份验证,而不是这里的问题)。
这是我到目前为止所拥有的:
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
因为用户购物车中的第二个订阅也是获得折扣的订阅。我知道我可以写这样的东西:
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
但我只是不确定这是否是最佳做法。想法?