そのため、RailsアプリにPresentersを使用するための最初の一歩を踏み出し、コードの一部のリファクタリングを検討しています。電話番号(電話、携帯電話、ファックスなど)を適切にフォーマットしたり、「指定なし」と表示したりするフィールドがいくつかあります。明らかに、私はもともとこれをビューに持っていましたが、ロジックをプレゼンターに移動しました。そこで私はそれがすべて同じであることに気づいたので、メソッド名とsend関数を使用するプライベートメソッドにリファクタリングしました:
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はメソッド名を使用しているため、3つの別々のメソッドを定義する必要があるようです。ここでもっと何かできることがあるかどうか興味がありました。
ps hande_noneは、そこに何かがある場合は単にブロックを返すか、「nonegiven」を返します