2011-03-02 77 views
2

我是ruby和rails的新手,我很難將MVC技術與數據庫視圖一起概念化。我正在處理一個遺留的數據庫,它有幾個用於生成報告的viiews。在rails中處理遺留數據庫視圖

我迷失方向的是如何實際使用數據庫視圖。它應該放在模型中嗎?如果是這樣的話會是什麼樣子?

作爲一個例子,遺留數據庫有一個名爲qryTranscriptByGroup的視圖。它用於SQL語句中的遺留應用程序,如「SELECT * FROM qryTranscriptByGroup WHERE group ='test_group'」。這會返回少量記錄,通常少於100.

如果我創建模型,腳本,我將如何定義像Transcript.find_by_group(group)這樣的方法?而且,似乎我可能需要防止任何其他「查找」方法,因爲在這種情況下它們是無效的。

還有一個事實,即視圖是隻讀的,我需要防止任何嘗試創建,更新或銷燬它。

也許我正在完全錯誤的方式。底線是我需要從幾個表格(模型?)中獲取信息,這些表格表示關於用戶(成績單)的信息。其實一個或多個用戶(成績單複數)。

- 謝謝!

回答

6

您可以像普通模型一樣使用數據庫視圖。

你的情況:

class Transcript < ActiveRecord::Base 
    set_table_name "qryTranscriptByGroup" 
    set_primary_key "if_not_id" 
end 

查詢將被然後:

Trascript.find_by_group('test_group') 

,而不需要任何聲明。

Rails使用method_missing方法來奇蹟般地生成find_by_column_name方法。

對於創建/更新/刪除操作,您可以簡單地刪除它們或不在控制器中創建它們。

+0

令人驚歎!這讓我想起了切換到Mac--我一直試圖做的事情是「硬道路」(又名MS Windows)。一旦我開始思考「最簡單的方式」做事,我就沒有更多的問題了! – danv 2011-03-02 18:14:35

+0

在這些成績單的情況下,我真的會用它們來創建報告。可以安全地說我不需要成績單控制器和成績單視圖。 現在,我會抓取一份記錄並「分析」它來提交報告。會有不同的報告,但他們都使用相同的抄本進行「分析」。 所以,我最終的目標是一個像/ reports/summary/group1這樣的路徑。這是一個明智的做法嗎? – danv 2011-03-02 18:29:29