2013-07-22 52 views
0

我目前正在重構我的rails應用程序。到目前爲止棘手的部分是表posts如何解決rails中單表繼承的複雜性?

在我使用posts當前版本:

  • 問題
  • 解答
  • 評論

使用post_type屬性。

關係:

  • 問題有很多答案和評論。
  • 答案有很多意見。
  • 答案屬於一個問題。
  • 評論屬於答覆或問題。

到目前爲止,我劈開了問題和答案後類型分爲獨立的模型,使用同一個表:posts。但與評論我有以下問題:

每篇文章,但評論,是值得評論的。如果創建一個額外的comments表併爲每個帖子類型創建一個「可評論的」多態關聯而不是繼承posts表?

+1

我認爲把它們拉到'可評論的'是有意義的,因爲如果你不這樣做,你會在問答表和答案表中'註釋'(或者你將重新註冊到答覆評論的帖子表)。看起來更清晰這是假設問題評論和答案評論具有相同的字段/要求 – Doon

+0

是的評論structor對於每個帖子類型都是相同的我也在考慮將整個帖子表分成問題和答案以便更容易維護 – sn3ek

回答

1

然後我開始讀你的問題我認爲的第一件事是首先分開模型(作爲非破壞性更改),然後在第二步中分離數據庫表。

關於評論我認爲你應該有一個Comment模型,它與AnswerQuestion多態關聯。

所以在第一步驟中,您應該分開當前Post型號爲:QuestionAnswerComment,但繼續使用帖子db表(所以我想default_scope在這些模型的設置適當post_type值)

二步驟將會是(首先經過測試,再次測試,甚至可能部署到壓碎測試),以將每個模型的數據遷移到單獨的數據庫表中。這將使得應用程序設計方法更容易,單個表中的數據更少等。它不應該對性能產生負面影響,因爲sql查詢計數不會改變。

+0

謝謝,我想這就是我要做的,我正在看着RailsCast到STI和Polymorphism,並決定刪除STI以獲得更好的維護。 – sn3ek