2012-01-07 96 views

回答

2

請記住,您仍然可以在Rails中使用標準的面向對象的實踐。創建一個擴展ActiveRecord::Base所有常用功能的類,然後爲每個真實的ActiveRecord模型擴展該類。

+1

良好的面向對象設計將只會繼承,如果類有一個「是」的關係。對於Ruby,我建議創建一個模塊並使用'include'。 – 2012-01-07 04:36:49

+0

爲什麼不創建一個顯示此答案的答案?我不知道如何在模型中使用include。 – imjp 2012-01-07 05:00:25

3

編寫一個包含所需方法的模塊,並根據需要編寫include MyModule

你當然可以做@derekerdmann建議,併爲你的模型創建一個抽象基類:

class MyBaseModel < ActiveRecord::Base 
    abstract_class = true 

    def my_method(*args) 
    #code goes here 
    end 
end 

class MyModel < MyBaseModel 

end 

只是不要忘了abstract_class = true線或單表繼承假設。個人而言,我更喜歡mixin方法,因爲如果您的模型在通用功能上有分歧,您可以根據需要將常用功能分組爲單獨的模塊和include

+0

感謝您的輸入。我如何使用mixin方法? – imjp 2012-01-07 05:02:12

+1

這裏有一個相當不錯的基本教程:http://juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/ 如果你是Google'ruby mixins',你可以找到更多。 – 2012-01-07 05:29:06

相關問題