Własny getter dla pola klasy?

Cześć,

mój model ma pole daty, po pierwsze zastanawiam się, czy sposób formatowania tej daty, powinien być zrealizowany po stronie modelu, czy widoku? Jeżeli widoku - bo tak mi się zdaje - to każdym miejscu gdzie wyświetlam tą datę, muszę dodać .strftime() (a może helper jakiś???). Jeżeli po stronie modelu - to ustawia to tylko w jednym miejscu. Tylko pytanie jakim?

Poniższy kod spowoduje ewidentny błąd:

def birth_date birth_date.strftime("%Y") end W jaki sposób najlepiej napisać metodę do pobierania tak zmodyfikowanego pola? Wiem oczywiście, że można je nazwać get_formated_birth_date i zadziała… Zastanawiam się jak to powinn być zrobione porządnie.

  1. lepiej helper
  2. birth_date_string (jeśli już musisz rozbudowywać model) na przykład?
  3. zdefiniować w locale formatowanie daty (albo ogólnie skonfigurować)

Lepiej helper - jeśli jednak chciałabyś nadpisać metodę birth_date zachowując tę samą nazwę możesz to zrobić tak:

def birth_date
  super.strftime("%Y")
end

Mozesz tez zdefiniowac format czasu

Przyklad z lambda i bez (kod z mojego environment.rb)

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!( :iso_date => "%Y-%m-%d %H:%M", :iso_date_with_timezone => lambda { |time| time.strftime("%Y-%m-%d %H:%M #{(time.utc? ? 'UTC' : '%z')}") } )
I wykorzystywac go do konwersji:

@obiekt.birth_date.to_s(:iso_date_with_timezone)