2016-04-03 13 views
0

以下は私の使用例です -Rails - コントローラのヘルパーはどこに行けばよいですか?

GoogleにAPI呼び出しを行うコントローラメソッド(アクション)があります。私はlibフォルダに入れたクラスGoogleを作成しました。クラスGoogleは、API呼び出しメソッドを提供します。

def self.list_items(folder_id, access_token) 
    result = RestClient.get "#{API_URL}/drive/v2/files", 
          { 
           :Authorization => "Bearer #{access_token}", 
           :params => {:q => "'#{folder_id}' in parents and trashed=false"} 
          } 
    return JSON.parse(result)['items'] 
    end 

は、しかし、私はGoogleからlist_itemsを呼び出すメソッドを記述する必要があり、access_tokenはは、有効期限が切れるaccess_tokenは更新され、データベースに新しいaccess_tokenはを保存し、再びlist_items呼び出しを行う場合には、例外をキャッチします。

このメソッドはデータベースとやりとりする必要があるため、クラスに入れないようにします(lib)。私はレールが初めてで、libフォルダにサードパーティ製のコードが必要であることを理解しました。クラスGoogleは、レールプロジェクトやビジネスロジックとは関係なく、POROとしてサードパーティのクラスと考えることができます。この理解が間違っている場合は、私を修正してください。

私はこのメソッドをコントローラのプライベートメソッドとして保持できますが、そのようなメソッドが複数あると想定します。コントローラが太ってしまうのではないでしょうか?

また、コントローラはFileApiControllerですが、これらのメソッドはすべてGoogle固有のものです。また、ボックスとドロップボックスに固有のメソッドもあります。私は理想的にはGoogleHelperDropboxHelper等のクラスを作成したいと考えています。これもdbと対話します。このクラスはどこに保管しますか?

私はGrailsのバックグラウンドから来ており、通常GoogleHelperはGrailsのgoogleServiceのようなサービスとして作られます。それをする方法は何ですか?具体的には、もし私がGoogleHelperクラスを作るなら、それをどこに保管しますか?ヘルパーフォルダはビューヘルパーを保持するためだけだと思います。あなたは今、あなたはあなたのヘルパーを呼び出すことができ、その後のコントローラでGoogleHelperを呼び出すapplication_controller.rbこのinclude GoogleHelper

でそれを追加したい場合は

答えて

2

app/helpers/google_helper.rb

module GoogleHelper 

class << self 

    def print_hello 
    puts 'HELLO WORLD' 
    end  


    def list_items(folder_id, access_token) 
    result = RestClient.get "#{API_URL}/drive/v2/files", 
          { 
           :Authorization => "Bearer #{access_token}", 
           :params => {:q => "'#{folder_id}' in parents and trashed=false"} 
          } 
    return JSON.parse(result)['items'] 
    end 
end 
end 

にファイルを作成します。GoogleHelper.print_helloをコントローラーに。

+0

list_items内のコードを削除することができます。ここでは、代わりに「Google.list_items」を呼び出します。あなたのソリューションは良いようですが、私はヘルパーフォルダの下のクラスは、ほとんどのビューヘルパーのためだと思った。コントローラのヘルパーをヘルパーフォルダの下に置いておくのが一般的な方法ですか? – vishesh

+0

はい、その良い習慣は、コントローラとビューのヘルパーを使用することです。 – 7urkm3n

+0

また、ヘルパー 'GoogleHelper.print_hello'もMODELファイルで呼び出すことができます。 – 7urkm3n

関連する問題