Ruby on rails 轨道&x2B;条带:在哪里存储用户的订阅类型?
Rails在这里是新手,所以请在答案中添加尽可能多的细节,并随时告诉我我做错了 背景:我正在构建一个SaaS rails应用程序,并计划很快添加条带(支付)集成。在我集成stripe之前,我想构建出区分不同帐户类型(订阅计划)的功能 我在应用程序中使用了许多if/else语句,这取决于帐户类型(例如免费、1级、2级),以向用户显示/隐藏适当的功能。我的基本陈述如下: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
<% 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调用的代码中,确保您也在更新本地副本,或者
- 使用我们的来监听与您的客户相关的事件(例如,
)。通过这样做,您可以确保您的本地数据库始终与Stripe匹配–即使您通过仪表板更改客户的计划,您的webhook端点也会收到更新customer.subscription.updated