2012-12-31 34 views
0

在我的Rails項目中,我有兩個相似的模型SafetyTestTeamDue。他們的領域完全一樣,他們的名字不同。每個實例belongs_to a Student讓用戶在Rails中創建自己的模型

我想添加能夠創建新的模型,遵循上述兩個結構。所以,我想添加MedicalForm。我不想通過CLI作爲開發人員來做到這一點,而是在視圖中提供一個接口,以便管理員可以添加他們自己的接口。

假設SafetyTestTeamDueMedicalForm都可以用名稱SeasonalRequirement來描述。什麼是實施我的想法的最好和最可維護的方式?

我對Rails沒有經驗,但我的想法是將上述模型合併到一個名爲SeasonalRequirement的綜合模型中,並且爲每種類型添加一個type列。問題在於:用戶如何創建一種新的季節性要求(如MedicalForm)?當我試圖爲每一個節目展示一個單獨的部分時,我甚至可以確定哪些類型的季節性要求?

回答

0

RoR不太常用,但是讓用戶改變數據庫的結構似乎是一個壞主意。

什麼可能的工作是這樣的:

additional_student_columns 
-------------------------- 
id 
name 

,並添加另一個表:

additional_student_values 
-------------------------- 
student_id 
column_id 
value (string) 

這樣做的缺點是,它可以只使用字符串值

+0

我不知道這將如何工作,並使用兩個表似乎不是很像Rails,就像我。最後,我並沒有建議用戶改變數據庫;我提議的只是創建新的領域。如果他們這樣做,我應該澄清,這些「用戶」將是管理員誰只會搞砸自己的網站。 – LonelyWebCrawler

+0

column_id引用additional_student_columns.id,管理員可以通過在其中添加值來添加新列。 – nishantjr

+0

我可能只是用你的解決方案,因爲它非常簡單。 – LonelyWebCrawler

1

我會考慮一個多態或STI關係。

看到更多細節在:http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html

我會用STI來建模。

+0

謝謝,我會研究這個。 – LonelyWebCrawler

+0

我有STI的基礎知識,但這裏有問題:STI需要每種類型的子類 - 它是如何動態工作的? – LonelyWebCrawler

+1

嗨,請查看如何動態創建ruby類,http://www.dzone.com/snippets/create-classes-runtime並查找一些ruby元編程以及 – sameera207