Назначение псевдонимов именам месяцев с Ruby on Rails 4

В моем приложении Ruby on Rails, когда пользователь отправляет форму, я хочу иметь возможность записать текущий месяц и год, в котором была создана форма. Тем не менее, для месяца я хочу иметь возможность использовать псевдоним для месяца вместо Rails, используя фактическое имя месяца. Так например:

  • J = Январь
  • F = Февраль
  • R = Март
  • апрель
  • M = Май
  • U = Июнь
  • Y = Июль
  • G = Август
  • S = Сентябрь
  • C = Октябрь
  • N = Ноябрь
  • D = Декабрь

Наиболее близкое решение, которое я смог найти, это использовать Rails Internationalization (I18n) API. Кто-нибудь знает, есть ли лучший или более простой способ сделать это, а не создавать поддельный язык, чтобы дать мне локализованные имена месяцев?

Подробная информация

Мое намерение заключается в том, чтобы rails записал новый псевдоним в базе данных под столбцом month_abbr. Что расшифровывается как аббревиатура месяца. Так что если бы я отправил форму в октябре месяце, буква » C » была бы записана в базу данных. Подобно тому, как метка времени автоматически записывается для каждой записи, я хочу захватить только месяц и записать один псевдоним символа.

Заглядывая дальше за занавес, нам нужно, чтобы аббревиатура месяца была только 1 символом. В дальнейшем в этом месяце аббревиатура будет объединена в кодовый номер партии. Мы стараемся максимально сократить номер кода партии, поэтому не можем использовать встроенные сокращения месяца. Они просто слишком длинные.

1 ответ

  1. Это кажется легким. Просто сопоставьте номер месяца с кодом один раз во время создания записи.

    class Order
      MONTH_ABBRS = {
        1 => 'J',
        2 => 'F', 
        3 => 'R',
        ...
      }
    
      before_create :save_month_abbr
    
      private
    
      def save_month_abbr
        self.month_abbr = MONTH_ABBRS[created_at.month]
        # also you can create your order number here, or whatever
      end
    end