使用Ruby on Rails 4为月份名称分配别名

时间:2016-09-28 15:55:40

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

在我的Ruby on Rails应用程序中,当用户提交表单时,我希望能够捕获创建表单的当前月份和年份。但是,对于本月,我希望能够使用使用实际月份名称的一个月而不是Rails的别名。例如:

  • J = 1月
  • F =二月
  • R = March
  • A = April
  • M =五月
  • U =六月
  • Y = 7月
  • G =八月
  • S = 9月
  • C =十月
  • N = 11月
  • D = 12月

我能够找到最接近的解决方案来使用Rails Internationalization(I18n)API。有没有人知道是否有更好或更简单的方法,而不是创建一个假的语言给我本地化的月份名称?

更多信息

我的目的是让rails在month_abbr列下的数据库中记录新的别名。哪个代表月份缩写。因此,如果我在10月份提交表格,则字母“C”将记录在数据库中。类似于为每条记录自动记录时间戳的方式,我想只捕获月份并记录单个字符别名。

在幕后进一步窥视,我们需要月份缩写只有1个字符。将来本月的缩写将连接成批代码。我们试图尽量缩短批次代码,这就是我们不能使用内置月份缩写的原因。它们太长了。

1 个答案:

答案 0 :(得分:0)

这似乎很容易。只需在创建记录时将月份数映射到代码一次。

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