在自定义rails应用

时间:2017-06-03 02:03:16

标签: ruby-on-rails ruby model-view-controller bitcoin coinbase-api

我是一名学生,在美国一个着名的训练营学习网络开发。对于我的顶点项目,我决定尝试构建一个相当简单的应用程序,其中一个经过身份验证的用户可以向另一个用户发送一定数量的比特币(我向我的老师描述为瓶装倾翻平台)。虽然这在理论上听起来很简单,但有很多方面我担心会绊倒。

我正在使用Coinbase API使用rails构建此应用程序。在我的学校,我们已经教过使用相当严格的MVC架构的rails。这是我发现第一个问题的地方。关于资源,我们基本上是从头开始建设;这将标志着我第一次尝试在后端实现第三方API。我在Coinbase文档中注意到,我需要使用多个明确定义的资源。最值得注意的资源是用户和帐户(我将脚手架帐户称为“配置文件”,但它们在ERD中用于相同的目的)。

如果我正在使用这些预先构建的资源,我是否需要完全构建它们,或者我可以将它们简单地导入到我的文件中,然后自定义将代码编写到我的规范中?如果是这样,我只是简单地撕掉我的脚手架并从头开始是否有意义?更广泛地说,我应该如何将预先存在的资源安装到我的MVC架构中?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

使用Stripe作为示例,因为他们的文档是最好的:

在您的Rails应用程序中,您有一个User模型。为了这个例子,您的用户有一个idemailstripe_customer_id

user.rb

before_create :create_stripe_customer

def create_stripe_customer
  stripe_customer = Stripe::Customer.create(
    :email => "your@email.com",
  ) 
  self.stripe_customer_id = stripe_customer.id
end

def stripe_customer
  @stripe_customer ||= Stripe::Customer.find(self.stripe_customer_id)
end 

对外部API使用before_create不赞成(“如果超时或错误怎么办?”)但是为了学习做什么,没关系。

如果你问“我应该复制我自己数据库中的所有数据吗?”答案是不;让API完成工作,但缓存结果并确保不会使用外部API请求阻止应用程序的请求。