因此,我迈出了将 Presenters 用于我的 Rails 应用程序的第一步,我只是在重构我的一些代码。我有几个字段可以很好地显示电话号码(即电话、手机和传真)或显示“未给出”。显然,我最初在视图中有这个,但将逻辑移到了我的演示者中。到了那里,我注意到它都是一样的,所以将它重构为一个使用方法名称和发送函数的私有方法:
class CustomerPresenter < BasePresenter
presents :customer
def phone
format_number(__method__)
end
def cell
format_number(__method__)
end
def fax
format_number(__method__)
end
private
def format_number(method)
hande_none customer.send(method) do
h.number_to_phone(customer.send(method), :area_code => true)
end
end
end
然而这段代码仍然看起来并不干燥。因为 format_number 使用方法名称,所以我似乎必须定义三个单独的方法。我很好奇这里是否还有更多我可以做的事情。
ps hande_none 如果那里有东西,则简单地返回块或返回“没有给定”