2

ボタンが押されたときに、外部 API を呼び出してデータを更新したいと考えています。

コントローラーまたはモデルにロジックを配置する必要がありますか?

むしろ、どのロジックをコントローラーに入れるべきか、どのロジックをモデルに入れるべきかということです。

基本的には、外部サービスで新しいレコードが作成されているかどうかを確認したいのですが、新しいレコードがある場合は、それらをプルして自分の側で新しいレコードを作成したいと考えています。

そうでない場合は、無視して先に進みます。

これにアプローチする最良の方法は何ですか?

コードサンプルが役立ちます。

ありがとう。

4

1 に答える 1

4

libその下に、すべてのコアAPI呼び出しを処理するクラスまたはモジュールを作成し、それをモデルで呼び出します。

だから私は次のようなことをします。次のようなファイルを作成しますlib/tag_fetcher.rb

module TagFetcher

  def self.fetch_tags(...)
    # adress some API to fetch the tags
  end
end

次に、モデルに次のように記述します

def self.update_tags
  api_result = TagFetcher.fetch_tags
  # do your stuff here
end

(もちろん:あなたはあなたのケースにより関連性のある名前を考える必要があります)

このようにする理由:

  • 妥当性:フェッチと更新を互いに分離してテストできます
  • よりクリーンなコード:タグのフェッチはモデルの責任ではありません(単一責任の原則)
  • APIが何らかの形で変更される場合、または同じサービスで別のAPIを呼び出す場合、変更は最小限である可能性があります

HTH。

于 2013-02-22T15:02:37.320 に答える