0

私は米国の著名なブートキャンプでウェブ開発を学んでいる学生です。私の棺のプロジェクトでは、認証されたユーザーがBitcoinを別のユーザーに送ることができる非常にシンプルなアプリケーションを作成しようと決めました(私は先生にボトルチッププラットフォームとして説明しました)。これは理論的には単純なように思えますが、私はトリプルアップが心配です多くのポイントがあります。カスタムレールアプリでサードパーティのAPIリソースを実装する

私はCoinbase APIを使用してこのアプリケーションをレールで構築しています。私の学校では、かなり厳格なMVCアーキテクチャーを使って教えてきました。ここに私が最初の問題を見つけたのです。リソースに関しては、基本的にゼロから構築しています。これはバックエンドにサードパーティのAPIを実装しようとする私の初めての試みです。 Coinbaseのドキュメントには、私が使用する必要のある複数の明確に定義されたリソースがあることに気づきました。最も注目すべきリソースはユーザーとアカウントです(私はアカウントを「プロファイル」としてスカッフォールドしましたが、ERDで同じ目的を果たしています)。

これらの事前構築されたリソースを使用している場合、それらを完全に足場にする必要がありますか、単にファイルにインポートしてカスタム仕様にコードを書き込むことはできますか?もしそうなら、私の足場をひっくり返して最初から始めるのは意味がありますか?より広義には、既存のリソースをMVCアーキテクチャに適合させるにはどうすればよいですか?

ご協力いただきありがとうございます!そのドキュメントが最善であるため、例えばストライプを使用しようとして

答えて

0

:あなたのRailsアプリ内

は、あなたがUserモデルを持っています。この例のために、あなたのユーザーはidemail、およびstripe_customer_id

user.rbがあります

before_create :create_stripe_customer 

def create_stripe_customer 
    stripe_customer = Stripe::Customer.create(
    :email => "[email protected]", 
) 
    self.stripe_customer_id = stripe_customer.id 
end 

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

before_createを使用して外部のAPIに対して(「それはタイムアウトやエラーたら?」)ひんしゅくを買うされます何をすべきかを学ぶためには大丈夫です。

「自分のデータベース内のすべてのデータを複製する必要がありますか」と尋ねる場合は、答えはいいえだ; APIに作業をさせますが、結果をキャッシュし、外部APIリクエストを使用してアプリのリクエストをブロックしないようにしてください。

+0

私はそれが少しはっきりしていると思います。 'Stripe :: Customer.create'は、リソースにアクセスし、そのメソッドを使用しています。ですから、私がユーザにウォレットを作成させたい場合は、 'Coinbase :: Wallet :: Client.create_account'を呼び出す必要があります。 正直なところ、私のデータベース上のデータを複製するかどうかは分かりません。 'Stripe :: Customer.create'呼び出しの結果が自分のデータベースではなく自分のデータベースに格納されていることを推測するのは間違いですが、自分でデータベースに呼び出す必要があるだけです'stripe_customer'メソッドでやっているようです)? – d00medman

+0

そうです。データをサーバーに送信し(HTTP要求を介して)、ストアするようにします。インターフェイスとのやりとりに関係するビジネスロジックを処理している間は、APIプロバイダ(Coinbase、Reddit、Stripe)がデータモデルを処理するようにします(既存のものを再実装しません)。 –

+0

クールで、私はこのコードを書いていることに関して、いくつかの雑多な懸念もあります:1.)サードパーティのAPIとやりとりするとき、私は実際にコントローラーに触れる必要はないと思います。重い持ち上げはモデルで扱われますか? 2.)私は既にGemをインストールしていますが、requireステートメントをどこに置くべきか分かりません。私の直感は、ファイルの最上部にあるクラス定義の外にありますが、私はこれについて自信を持っていません。 3。)コインベースがActiveRecordから降りていくかどうか、あるいは別のスーパークラスが必要なのでしょうか? – d00medman

関連する問題