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呼び出しを行う適切な場所であるかどうかは疑問です。建築の視点からは正しいのでしょうか?または私は私のアプローチを変えるべきですか?

+0

いいえ - はい、いいえ、依存します。レールにモデルとしてのサービスオブジェクトや何らかのクライアントを作成するのが良いアイデアは、すでに多くの責任が詰まっています。 – max

答えて

0

いいえ、SRP principleに違反しています。アクティブレコードモデルでは、モデルデータにアクセスするメソッドのみを追加する必要があります。 新しいオブジェクトを作成することをお勧めします。

class CustomerService 
    def is_in_debit?(user) 
    // your http request here 
    end 
end 
関連する問題