Q
STI和小類
2
A
回答
2
所有你應該做的是改變類型字段。確保保存記錄,並從數據庫中重新加載Ruby對象。
如果這不起作用,您能提供一些能隔離問題的Ruby代碼嗎?
0
你問的是如何將一個子類的對象改爲其超類的不同子類?這在OO方案中並不是真的可行。可以將一個對象從一個超類轉換爲一個子類,但是不能將其轉換回來,因爲該對象現在可能包含超類所沒有的變量和方法。
+0
據稱號這篇文章中,OP使用單表繼承。 – 2010-06-11 20:29:31
+0
你是對的,這是可能的,儘管你仍然可能拉東西沒有道理,但它不應該打破你的對象。我對這個用例很感興趣,你們是否介意詳細說明你需要做些什麼來改變類型列? – lambdabutz 2010-06-11 20:53:32
0
多態性Rails會做的伎倆:
subclass1record.becomes(Subclass2)
注:新的實例將共享一個鏈接到相同的屬性原始類。所以任何一個實例中的屬性的改變都會影響另一個。
爲了避免這種情況,可以先複製記錄:
subclass1record_new = subclass1record.dup
然後改用新的紀錄:
subclass1record_new.becomes(Subclass2)
相關問題
- 1. Rails子類化和STI
- 2. Rails STI與小類的關聯
- 3. CanCan,InheritedResources和STI
- 4. STI和多晶型
- 5. STI和控制器
- 6. sti和has_many in rails
- 7. Understending STI和軌道
- 8. STI和RSpec問題
- 9. 軌STI子類收益超
- 10. Rails form_for使用STI基類
- 11. Rails STI更改類型
- 12. Rails STI條件分類從基類
- 13. Omniauth「與」STI和設計
- 14. 客戶端驗證和STI
- 15. 的Rails 3 devise_for和STI
- 16. Rails多重關係和STI
- 17. SearchLogic + STI
- 18. 爲STI模型提供了許多通過自相關和多態的方法,從而節省了STI父類名稱而不是STI子類名稱
- 19. Rails的STI子類上update_attributes方法
- 20. rspec測試子類sti方法rails 4
- 21. Rails STI - 阻止基類實例化
- 22. Rails STI:實現子類編輯表格
- 23. rails STI:子類的特定屬性
- 24. rails-類型列使用什麼值? (STI)
- 25. STI類型列的案例說明
- 26. 設計和STI如何登錄作爲基類註冊
- 27. 訪問創建視圖和控制器上的STI類型
- 28. Rails的STI的has_many和belongs_to的繼續尋找類列
- 29. Rails STI和「類型」字符串的設置
- 30. Java類和小類
感謝名單奏效 – markiv 2010-06-11 20:36:04