2011-05-12 56 views
2

我對Rails相當陌生,試圖對數據非常乾燥。在多個模型和控制器中使用相同的代碼(或者僅替換模型名稱)

我有幾個模型,控制器和視圖是完全相同的。模型使用id,name,控制器只能通過id檢索,並且總是從另一個表中獲取相同的對象,並且這些操作也完全相同。

--- UPDATE ---這些表格作爲遺留系統的一部分存在,所以我不能用一張表重新創建表格。

看起來不是DRY(溼?)擁有所有3個模型,3個控制器和9個完全相同的視圖。

有沒有辦法將表名作爲變量傳遞給這些實例?

如果這不是建議在rails中,你能解釋爲什麼不呢?

+2

如果所有模型(幾乎)完全相同,爲什麼不使用單表繼承? – Zabba 2011-05-12 19:06:18

+0

不幸的是,這些表正在被另一個應用程序使用,所以我不能將它重新創建爲單個表繼承。我會更新這個問題,最初應該提到這一點。 – pedalpete 2011-05-12 20:54:08

回答

1

簡單的乾燥方法是爲這些視圖創建常見的部分並渲染它們。

如果你想幹你的控制器/模型,你可以將你的邏輯提取到另一個他們都很樂意繼承/需要的類。

+0

能不能詳細介紹一下yoka?當你說提取到另一個類時,該類應該作爲模型存在嗎?幫手?在一個已經存在的模型中?我假設'要求',我會在我的控制器或模型的頂部使用require'className'?是對的嗎? – pedalpete 2011-05-14 16:52:11

+0

看看如何編寫擴展控制器功能的rails插件,這樣您就可以編寫通用操作並在需要類似功能的控制器中使用這些操作。 [http://guides.rubyonrails.org/plugins.html](http://guides.rubyonrails.org/plugins.html) – yoka 2011-05-15 10:40:58

+0

插件的東西似乎相當多的開銷,我最終做的是把所有東西放在一個控制器,然後在其他控制器的頂部包含require controller_name,然後調用我需要的。在未來的yoka,如果你能更清楚地解釋你的意思,你可能會發現更多的運氣讓你的答案被接受。請注意,您對我的評論的回覆沒有回答這個問題,只是說'在另一個班級中「沒有說明我在找什麼類的課程。作爲一名初學者,你的回答指示我在哪裏尋找,但並沒有真正回答這個問題。 – pedalpete 2011-05-24 17:00:29

相關問題