Rails - 付款后提供可下载的文件

时间:2011-03-14 18:42:35

标签: ruby-on-rails download payment-processing braintree

我正在寻找一种方法将购买的文件提供给网络应用的用户。基本上用户会从我的网站购买“产品”,此时他们可以下载他们购买的文件(可能是我预编译的zip文件)

我正在使用Rails 2.3.8,并使用Braintree解决方案进行付款处理。有没有一种标准的方法来实现这一点,使用短代码或什么? Braintree内置了什么,插件/ gem是否存在?

我真的在寻找一个正确的方向,以确定如何做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以做的是让每个Product模型have_many获得批准的用户。当BrainTree为您提供用户为产品付款的确定时,您可以将该用户添加到已批准的用户列表中。因此,在ProductController中检查current_user是否为已批准用户,如果是,请下载该文件,否则重定向。

例如:

product.rb

class Product < ActiveRecord::Model
  has_many approved_users, :class => User
end

product_controller.rb

class ProductController 
  def download
    @product = Product.find_by_id(:id)
    if @product.approved_users.includes?(current_user)
      # Give them the file
    else
      flash[:notice] = "You must buy the product first!"
      redirect_to product_sales_url(@product)
    end
  end
end 

或类似的东西。我的语法可能有些偏差,但这应该可以帮到你。