Me gusta la respuesta de Bartosz, pero bueno, ya que estamos hablando de Rails, vamos a dar un paso adelante con desviaciones. (Editar: aunque solo iba a usar monkeypatch con el siguiente método, resulta que hay una forma más limpia).
DateTime
las instancias tienen un to_formatted_s
método proporcionado por ActiveSupport, que toma un solo símbolo como parámetro y, si ese símbolo se reconoce como un formato predefinido válido, devuelve una Cadena con el formato apropiado.
Esos símbolos están definidos por Time::DATE_FORMATS
, que es un hash de símbolos para cadenas para la función de formateo estándar ... o procs. Bwahaha
d = DateTime.now #Examples were executed on October 3rd 2008
Time::DATE_FORMATS[:weekday_month_ordinal] =
lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") }
d.to_formatted_s :weekday_month_ordinal #Fri Oct 3rd
Pero oye, si no puedes resistir la oportunidad de hacer parches, siempre puedes darle una interfaz más limpia:
class DateTime
Time::DATE_FORMATS[:weekday_month_ordinal] =
lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") }
def to_my_special_s
to_formatted_s :weekday_month_ordinal
end
end
DateTime.now.to_my_special_s #Fri Oct 3rd