0
私は私のシステムと外部Webサービスとの統合に取り組んでいます。私のシステムでは、私はCustomer
モデルを持っています。顧客はデビット可能ですが、この情報(顧客の財務状況)は自分のデータベースでは利用できません。それは私が統合しているwebserviceにあります。Railsモデルからhttpコールを行うことはできますか?
私はこのモデルでメソッドを作成し、is_in_debit?
という名前を付けました。メソッドの実装では、WebサービスへのHTTP呼び出しを行っています。
class Customer < ActiveRecord::Base
...
def is_in_debit?
response = HTTP.get_response('https://...').body
response = JSON.parse(response)
response['status'] == 'active' ? false : true
end
end
しかし、モデルがHTTP呼び出しを行う適切な場所であるかどうかは疑問です。建築の視点からは正しいのでしょうか?または私は私のアプローチを変えるべきですか?
いいえ - はい、いいえ、依存します。レールにモデルとしてのサービスオブジェクトや何らかのクライアントを作成するのが良いアイデアは、すでに多くの責任が詰まっています。 – max