2011-10-26 12 views
2

私はジムアソシエーションを持つユーザーモデルを持っています。ジムは、after_saveで行われるジオコーディングのために、ジオコーダーの宝石を介してgoogle apiを使用します。私のジムの仕様では、use_vcr_cassetteを追加してリクエストを記録し、スペックを通過させることができました。モデルのジオコーディングのためにVCRグローバルカセットを設定するにはどうすればよいですか?

私のユーザーファクトリがジムアソシエーションを作成するため、すべての外部リクエストがオフになっているため、ジオコード要求の処理方法がわからないため、ユーザーファクトリを使用する仕様が失敗しています。

私のジムファクトリーによるリクエストに以前のジムカセットをグローバルに適用するにはどうすればよいですか?

+0

私は工場の女の子のコールバックを使用して何かをしようとしています。したがって、ジムファクトリーでは、after_build {VCR.use_cassette( 'Gym')}が使用されています。 –

答えて

1

モデルでサードパーティのAPI呼び出しを行っている場合は、設計に重大な問題があると思います。あなたは私の長い応答を同様の質問hereに読むことができます。

+0

非常に良い点。私はAPIコールをオブザーバに移しました。ありがとう。 –

+1

ええと、私はafter_validationを行うために見つけることができるすべての例:geocode - 私はLocationと呼ばれるモデルを持っています - それは文字通りちょうど名前をとり、アドレスとジオコードを取ります。行う? - 私がこれを観測者に持っていくと、私のロケーションモデルは非常に裸です。 FactoryGirlに常にVCRカセットを使用するように指示する方法はありませんか? - 私は時々サードパーティのAPIがまだ生きているかどうかをチェックするためにカセットを削除することができます。 –

+2

私は@RomanGaufmanに同意すると思います。モデルがbussinessロジックとデータ永続性を担当する場合、Locationモデルはその3番目のAPI呼び出しを行う必要があります。私が知っているすべての地理位置の宝石は、そのように設計されています...彼らはすべて間違っていますか?私は、観測者のパターンは、データが外部ソース(コントローラが関与していない)によって変更されたときにデカップリングを維持するための素晴らしい方法だと考えていますが、まだビューに通知する必要があります。しかし、私はそうではないと思います。私は今のところジオコードメソッドをスタブしましたが、私はvcrを使い、実際のリクエストから意味のあるデータを取得することを好みます。 – deivid

関連する問題