2017-03-29 16 views
0

まず、私はpunnyのタイトルについて謝罪する必要があります。Rails:制御コードが制御外にある

私はRoRの新人です。私は徐々にサイズが小さくなっている小さなプロジェクトに取り組んでいます。コントローラの1つが、今、それをリファクタリングする論理の混乱になっています。

このトピックに関する多数の質問/回答から私が見ていることは、ほとんどが私がベストプラクティスであると考えるものに関する断片的な情報です。私は大きな絵を見るのに苦労している。 「コードを置く場所」のサイト高いレベルの情報を持っていて、ぎこちない気がする。

ここで質問です:

コントローラの外にコードをリファクタリングするためのベストプラクティスは何が? (場所、コードの種類)

背景:私のアプリはデータベースを使用せず、コントローラのコードは主に、フォームからのパラメータに基づく外部APIへのHTTP呼び出しと、配列を作成するための数行のロジックビューが消費するデータをフェッチします。これらのAPI呼び出しの一部は、以前に取得された情報に依存します。

ありがとうございます! single responsibility principleを使用して

MP

+0

あなたはコントローラとモデルの責任を一緒に磨き上げてきたように思えます。コントローラは、基本的に入力(パラメータまたは値)を受け取るか、出力を決定する(応答して表示するビューを示す)、モデルとビューの間で情報を渡すためのものです。他のすべて(あなたのHTTPコールを含むビジネスロジック)があなたのモデルに入ります。とにかく、あなたは本当にここで特定のプログラミングの質問をしていません。この時点で、Railsの本をブラッシュアップしたいかもしれません。 – MarsAtomic

答えて

1

、私はあなたが現在お使いのコントローラに座っている所望の機能を達成するためにapp/support/app/servicesのクラスを作成します。コントローラはリクエストを送信/受信し、不平等な作業を "サポート"クラスに任せてください。この問題に便利なのはthisです。

機能が特定のモデルとそのモデルのみに関係していることを正当化できる場合は、そのモデルを使用します。私はあなたがこのロジックのためにあなたのモデルを使用することができるという議論を見ましたが、私の意見では、特定のモデルはそのモデルだけに関係するコードを含むべきです。

0

この回答を投稿する前にリンクを見つけることができませんでしたが、ヘルパーファイルを活用する方法がかなりあります。これはあなたのコントローラとビューから多くのコードを取得します。