在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