我有一个这样的模型:
class MyModel
attr_accessor :size
end
现在我想以人类可读的格式显示大小。我可以通过添加以下代码来做到这一点:
class MyModel
attr_accessor :size
def size_hr(bytes = nil, counter = -1)
counter += 1
bytes ||= size
if bytes < 1024
return "#{bytes.round(2)} #{unit_for(counter)}"
else
size_hr bytes/1024, counter
end
end
def unit_for(counter)
case counter
when 0 then "B"
when 1 then "KiB"
when 2 then "MiB"
when 3 then "GiB"
end
end
end
但是我对此感到有些不好,因为我会将视图内容混合到模型中。我正在寻找一种设计模式,这将是做到这一点的正确方法。我读过关于装饰者和演示者的文章,但我认为它们不适合这里。什么是正确的方法?