2011-05-04 67 views
1

我有一個需要導出數據的Rails應用程序。數據導出是一項複雜的操作,可創建包含各種模型信息的外部數據庫。我現在將數據導出例程作爲單獨的rake任務編寫,現在我想將它們公開給用戶。我應該在模型或控制器中定義導出嗎?

我想不通的是,是否創建一個包含所有的邏輯出口的模型,所以基本模型將是一個單一出口的實例或者我應該直接創建程序作爲一個輔助庫和使用從一個控制器,這也是有道理的。

回答

1

基本上,「導出」只是創建另一種訪問數據的方式。

什麼管理訪問和表示數據的方式是視圖。所以你應該創建另一個視圖,而不是模型或控制器。

您將創建的視圖當然會調用某種導出功能。導出函數將數據模型作爲輸入並以「導出」的形式返回數據。這可以是模型對象中的方法(「導出我」),也可以是位於lib/文件夾中的腳本中的單獨函數。

但是,當您執行此導出功能時,可能希望使用其他數據模型(例如,以緩存導出的數據)。但這是導出函數的實現細節,可能根本不需要。

+0

好點。我甚至沒有把這個觀點看作是一種選擇,但它也是有道理的。然後,這將是一個沉重的觀點,其中有相當多的邏輯,它並不真正適合MVC模型。 – Ressu 2011-05-04 19:29:36

+0

@Ressu,您不必將邏輯嵌入視圖本身。視圖應該只是調用其他地方存儲的邏輯 - 就像它總是這樣。 – 2011-05-04 22:05:00

+0

這會讓它更適合。所以正確的解決方案是在這裏結合使用答案。創建一個模塊或類以方便導出並使用視圖將其呈現給用戶。謝謝。 – Ressu 2011-05-05 07:53:42

1

在我看來,你應該創建一個模塊或類(以更適合您的導出實現爲準),並從控制器調用它。對我來說,好像用戶正在發出請求,控制器然後將該請求引導到外部庫來完成它,然後可以向控制器報告它已完成,並且控制器可以通知視圖。

如果你打算在數據庫中存儲導出請求,那麼把它放在模型中只對我有意義。

+0

模塊或類比模型更適合,你是對的。它也可以保持控制器整潔。 – Ressu 2011-05-04 19:31:43

相關問題