我有10款,其中3需要而它們恰巧是一些額外的定製方法:ActiveRecord的模型 - 添加自定義方法
has_staged_version?
apply_staged_version
discard_staged_version
我想一旦定義這些方法。
我可以創建一個ActiveRecord的自定義子類:Base,定義那裏的方法,並讓我的3個模型繼承它。但是有沒有更多的「Ruby/Rails」方法來實現?
乾杯
我有10款,其中3需要而它們恰巧是一些額外的定製方法:ActiveRecord的模型 - 添加自定義方法
has_staged_version?
apply_staged_version
discard_staged_version
我想一旦定義這些方法。
我可以創建一個ActiveRecord的自定義子類:Base,定義那裏的方法,並讓我的3個模型繼承它。但是有沒有更多的「Ruby/Rails」方法來實現?
乾杯
使用模塊作爲混合。
參見http://www.juixe.com/techknow/index.php/2006/06/15/mixins-in-ruby/
例如
在/lib
有
module StagedVersionStuff
def has_staged_version?
end
def apply_staged_version
end
def discard_staged_version
end
end
,然後在你想擁有這些方法你有
include StagedVersionStuff
的Class
聲明之後
您可以創建一個模塊,並有模型的類包括它:
module StagedVersionMethods
def has_staged_version?
end
def apply_staged_version
end
def discard_staged_version
end
end
Model.send :include, StagedVersionMethods
你的課程是做什麼的?是否使用子類或模塊的選擇更多的是基於類本身是的語義問題。
非常感謝 - 這是我之後的事情。 – Paul 2009-06-12 15:14:24