Ruby最佳化繼承類執行個體
這篇文章主要介紹了Ruby最佳化繼承類執行個體,本文直接給出一個最佳化執行個體及實現代碼,需要的朋友可以參考下
在Rails的原則裡有簡化Controller,豐富Model的說法。下面將用一個樣本展示一個簡單的繼承最佳化。特別是你的method裡有一個寫變化的self變數的時候。
假設我們有如下的Model
代碼如下:
class SubjectMatterExpert < User
include HashCodeCreatorModule
def make_activation_code
self.deleted_at = nil
self.activation_code ||= make_hash_code
end
end
class Administrator < User
include HashCodeCreatorModule
def make_activation_code
self.deleted_at = nil
self.activation_code ||= make_hash_code
end
end
我們可以通過繼承的使用簡化代碼如下SubjectMatterExpert Administrator
代碼如下:
class SubjectMatterExpert < User
end
class Administrator < User
end
class User
include HashCodeCreatorModule
def make_activation_code
self.deleted_at = nil
self.activation_code ||= make_hash_code
end
那麼我們也可以在測試中這麼使用:
代碼如下:
it 'should create an activation code' do
admin = Factory(:administrator)
admin.make_activation_code
admin.activation_code.should_not be_empty
end