Rails 4 Active Record Enums are great, but what is the right pattern for translating with i18n?
Yet another way, I find it a bit more convenient using a concern in models
Concern :
module EnumTranslation
extend ActiveSupport::Concern
def t_enum(enum)
I18n.t "activerecord.attributes.#{self.class.name.underscore}.enums.#{enum}.#{self.send(enum)}"
end
end
YML:
fr:
activerecord:
attributes:
campaign:
title: Titre
short_description: Description courte
enums:
status:
failed: "Echec"
View :
<% @campaigns.each do |c| %>
<%= c.t_enum("status") %>
<% end %>
Don't forget to add concern in your model :
class Campaign < ActiveRecord::Base
include EnumTranslation
enum status: [:designed, :created, :active, :failed, :success]
end