在Rails的原則里有簡化Controller,豐富Model的說法。下面將用一個示例展示一個簡單的繼承優(yōu)化。特別是你的method里有一個寫變化的self變量的時候。
假設(shè)我們有如下的Model
復(fù)制代碼 代碼如下:
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
復(fù)制代碼 代碼如下:
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
那么我們也可以在測試中這么使用:
復(fù)制代碼 代碼如下:
it 'should create an activation code' do
admin = Factory(:administrator)
admin.make_activation_code
admin.activation_code.should_not be_empty
end