То, что вы могли бы сделать, - это иметь 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
Или что-то в этом роде.Мой синтаксис может быть немного неправильным, но это должно помочь вам.