【发布时间】:2012-07-26 14:14:30
【问题描述】:
因此,我迈出了将 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 使用方法名称,所以我似乎必须定义三个单独的方法。我很好奇这里是否可以做更多的事情。
附言如果有东西,hande_none 只是简单地返回块或返回“none given”
【问题讨论】:
标签: ruby-on-rails ruby methods refactoring