2012-02-14 3 views
0

私はRailsにとっては初めてのことですが、私の最大の懸念は、オブジェクト指向設計を維持すると同時にMVCパターンを守るためのロジックを置く場所です。だから私はこれがRailsについてのMVCと同じように多くの疑問を抱いています。これは私のシナリオです:モデルやコントローラに適合しないカスタムコードはどこに置くべきですか?

アップロードされたExcelファイルを解析してその内容をインポートするRailsアプリケーションのインポート機能があります。私は関数を書いたときにOrdersControllerに入れました。私は最初からそれを置くのに最適な場所ではないことを知っていましたが、私はそれをモデルに入れたいとは確信していません。モデルに入れようとすると、それはクラスメソッドとなります。注文:: import_from_excel、そしておそらくそれは今すぐ大丈夫でしょう。しかし、タスクが成長してより複雑になる場合は、おそらくいくつかの方法に分割する必要があり、モデルが乱雑になります。その場合、インポート機能全体を独自のクラスに移動するのに適していると思います。 OrderImporterは、オブジェクト指向の環境であるMVCなしで完全に正常です。しかし、私はどこでそのようなクラスをlibに入れますか?

答えて

1

それを置く論理的な場所はモデルにあるので、Order::import_from_excelのようなものを持つことは良いアイデアだと思います。免責事項:私は脂肪モデル、スリムコントローラ哲学の主張者であり、他の人がこれについて異なる意見を持っているかもしれません。

しかし、からインスタンス化されて呼び出されるlib/という別のクラスに機能をカプセル化する必要があります。これはテスト容易性を助け、カップリングを減らし、Excelから他のものをインポートする必要が将来発生する場合に役立ちます。

+0

ありがとうございました!それは多くの意味があります。 – Johannes

関連する問題