ActiveHeartはどのようにカラム名の日本語化を実現しているか

Base.set_field_namesメソッドでは定義したカラム名と日本語名の対照用ハッシュ(@field_names)を作成する。
そして、ActiveRecord::Base#human_attribute_name(column_name)と言うメソッドをaliasにより独自メソッドに置き換え、引数のカラム名が@field_namesに含まれていればハッシュから返す。なければオリジナルのメソッドを呼び出す。


と言うものだった。
以下のコードがすべてかな。

    def set_field_names(field_names = {})
      @field_names = HashWithIndifferentAccess.new unless @field_names
      @field_names.update(field_names)
    end
    alias_method :_human_attribute_name, :human_attribute_name
    def human_attribute_name(attribute_key_name)
      if @field_names && @field_names[attribute_key_name]
        @field_names[attribute_key_name]
      else
        _human_attribute_name(attribute_key_name)
      end
    end


SpecialGenerationではlocalize/[table_name].ymlに同じような感じに書くのがDRYじゃないなぁ、なんて思ったり。
plugin-suiteみたいなのできないかなー。