2012-09-10 31 views
1

即便如此,它是一個初學者軌的問題,我想在這裏問的,計算器,只是爲了得到這一權利的邏輯的Rails:抽象類適用於機型

基本上我尋找一個解決方案創建一個抽象類(但是由於我們提到的是rails,它更像是抽象模型)。我無法理解的原因是因爲我總是生成我的模型和控制器(沒有腳手架),而且我找不到任何在線解決方案,因此我將生成一個從我預定義的抽象類繼承的模型。

基本上,假設我有一個類生物與像眼睛,鼻子等共同屬性,我想創建類從類繼承。我將如何能夠做到這一點。是否可以添加一個選項到終端命令或類似的東西。

真誠地尋找共同的和有效的解決方案。

+0

編輯生成的模型以擴展您的基類?或者使用mixin /模塊,或者使用STI,或者... –

回答

1

不,rails生成器沒有這個功能,但你總是可以自己做。

# app/models/creature.rb 
class Creature 
    attr_accessor :eyes, :nose 
end 

# app/models/human.rb 
class Human < Creature 
end 

# app/models/dog.rb 
class Dog < Creature 
end 
+0

非常感謝您提供簡單而驚人的答案!但有一個問題。當我遷移數據庫時,抽象類中的屬性是否會應用到Human和Dog表中? – Ali

+0

不。這個類在db中沒有持久性。如你所願,它們是抽象的。 8)如果你想在數據庫中存儲屬性,你應該從'ActiveRecord :: Base'繼承你的類。有很多模式可以做到這一點。 @達夫紐頓在他的評論中談到了其中的一些。 –