我對rails中的STI有些困惑。帶有CRUD和Rails表單的單表繼承
我的情況: 我有一個Contact
模型具有description
和data
字符串字段,以存儲如電話,傳真,電子郵件一些接觸等
現在,當我有一些具體的接觸式一樣的電話號碼電子郵件地址我想用不同的方式覆蓋數據格式,我想對輸出進行一些不同的格式化。
我決定使用STI,因爲所有的模型都有相同的數據,只有不同的行爲。我還有一些關於表單和CRUD操作的問題,因爲我不想違反Rails約定。
如何在模型類型的窗體中創建下拉列表?我應該硬編碼還是有更多的自動化方式?
如何創建記錄?我是否應該使用
switch
聲明並根據收到的類型創建相應實例的新模型?如果我要更改模型類型,我應該如何更新它?將對象轉換爲新類?或者創建一個新對象並銷燬前一個對象?
我會非常感謝您的幫助!
謝謝您的回覆。但是,如果我只設置一個類型字段,驗證是否適用於特定的模型? – Uko 2012-07-20 12:01:45
@Uko是的,如果你做'@model = type.camelize.contantize.new(params [:model])' – 2012-07-20 14:33:17
哇,真的很好。還有一件事。我應該如何處理更新?我應該像'@ model.becomes(type.camelize.contantize)'然後'@ model.update_attributes(params [:model])'做些什麼? – Uko 2012-07-20 16:54:05