2013-06-29 113 views
0

一個模式,我有,我想爲另一個基礎用Rails的模型。克隆Rails中

例如型號:親本將爲模型。 我可以看到兩個可能的選擇:

(1)從第一個模型繼承,然後添加其他列

Class Parent < ActiveRecord::Base 
Class Child < Parent 

(2)複製model.rb文件,並添加新的功能

Class Child < ActiveRecord::Base 

在這兩種情況下,都會創建模型的「Rails」部分,但數據庫表又如何呢?我可以創建一個使用創建表的孩子一樣SELECT * FROM父母其中1 = 2,然後創建遷移添加額外列,但它似乎並不像「Rails的方式」表。

有一種簡單的方法來創建基於現有的表遷移。還是我完全吠叫錯誤的樹?

回答

2

你(1)被稱爲single table inheritance(STI)。基本上你使用一個同時具有父項和子項字段的表。您還需要一個名爲type的列來標識對象的類型。

如果沒有更多的細節我不能說,如果它在你的情況下,使用STI是一個好主意,但(2)複印model.rb肯定看起來不正確。

+0

我明白了。那麼我想複製但不繼承的第二個實例呢?我是否還需要手動創建表格? – ardochhigh

+0

是的,在這種情況下,您需要爲兒童提供單獨的桌子,但重複的代碼聽起來並不適合我。 – Mischa

+1

@ardichhigh如果你想讓兩個不同的模型共享一些邏輯,你可以將它提取到模塊中。 –