2012-02-14 47 views
0

我是Rails的新手,我最大的擔憂是如何讓我的邏輯保持面向對象的設計,同時堅持MVC模式。所以我想這與MVC有關的問題與Rails有關。這是我的場景:當我的自定義代碼不適合模型或控制器時,我應該在哪裏放置自定義代碼?

我有一個導入功能在我的Rails應用程序解析上傳的Excel文件的訂單並導入其內容。當我編寫函數時,我把它放在OrdersController中。我從一開始就知道這不是最好的地方,但我不確定我是否也想把它放在模型中。如果我將它放入模型中,它將作爲一種分類方法,例如, Order :: import_from_excel,也許現在就好了。但是,如果該任務會成長,變得更加複雜,它可能會需要分割成幾個方法和模型將被混亂。在這種情況下,我認爲它適合將整個導入功能移動到它自己的類中,例如OrderImporter在一個沒有MVC,面向對象的環境中是完全正常的。但是,我會在哪裏放置這樣一個類,在lib中?

回答

1

把它將會在模型中的合理位置,所以我覺得有像Order::import_from_excel將是一個不錯的主意。免責聲明:我是脂肪模式的倡導者,苗條控制器理念,讓其他人可能保存有關此不同的意見。

但是,您應該將功能封裝到lib/中的獨立類中,該類可以從import_from_excel實例化並調用。這有助於可測試性,降低耦合,可能會幫助你,如果要求導入其他東西從Excel發生在未來。

+0

謝謝!這很有道理。 – Johannes 2012-02-15 08:34:56

相關問題