Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道&x2B;条带:在哪里存储用户的订阅类型?_Ruby On Rails_Ruby On Rails 3_Architecture_Stripe Payments - Fatal编程技术网

Ruby on rails 轨道&x2B;条带:在哪里存储用户的订阅类型?

Ruby on rails 轨道&x2B;条带:在哪里存储用户的订阅类型?,ruby-on-rails,ruby-on-rails-3,architecture,stripe-payments,Ruby On Rails,Ruby On Rails 3,Architecture,Stripe Payments,Rails在这里是新手,所以请在答案中添加尽可能多的细节,并随时告诉我我做错了 背景:我正在构建一个SaaS rails应用程序,并计划很快添加条带(支付)集成。在我集成stripe之前,我想构建出区分不同帐户类型(订阅计划)的功能 我在应用程序中使用了许多if/else语句,这取决于帐户类型(例如免费、1级、2级),以向用户显示/隐藏适当的功能。我的基本陈述如下: <% if current_user.account_level == "1" %> your account

Rails在这里是新手,所以请在答案中添加尽可能多的细节,并随时告诉我我做错了

背景:我正在构建一个SaaS rails应用程序,并计划很快添加条带(支付)集成。在我集成stripe之前,我想构建出区分不同帐户类型(订阅计划)的功能

我在应用程序中使用了许多if/else语句,这取决于帐户类型(例如免费、1级、2级),以向用户显示/隐藏适当的功能。我的基本陈述如下:

<% if current_user.account_level == "1" %>
    your account level is 1
<% elsif current_user.account_level == "2" %>
    your account level is 2
<% else %>

<% end %>

您的帐户级别为1
您的帐户级别为2
这假设我正在记录用户在用户模型(或其他模型)中的“帐户级别”。这是合适的地方吗?从技术上讲,Stripe具有最新数据(即,如果卡取消,则帐户级别将不同)。我应该直接使用条带api来确定帐户级别吗?似乎我应该在我的数据中有记录


当我知道我将在未来集成Stripe时,在开发时是否还应该记住其他最佳实践

虽然Stripe将存储最新的数据,但我建议对您经常使用的任何东西(如订阅状态)维护本地缓存

有两种主要方法可用于确保数据库具有最新状态:

  • 在对条带进行API调用的代码中,确保您也在更新本地副本,或者

  • 使用我们的来监听与您的客户相关的事件(例如,
    customer.subscription.updated
    )。通过这样做,您可以确保您的本地数据库始终与Stripe匹配–即使您通过仪表板更改客户的计划,您的webhook端点也会收到更新

在本地存储此数据的主要好处是速度:您很可能不希望您的客户等待访问此数据的每个请求的API调用,特别是因为您似乎需要在整个网站中使用此数据

您需要确保将存储在数据库中,以便可以将Stripe客户与本地用户进行匹配