module FormTranslation::ForModel::ClassMethods

Public Instance Methods

create_translated_getters(methods) click to toggle source
Calls superclass method
# File lib/form_translation/for_model.rb, line 53
def create_translated_getters(methods)
  mod = Module.new
  methods.each do |nam|
    mod.send(:define_method, nam) do
      return super() unless self.class.form_translation_locale
      return super() if self.class.form_translation_locale == FormTranslation.default_language
      a = self.send "#{self.class.form_translation_locale}_#{nam}"
      a.presence || self[nam]
    end # define_method
  end #methods.each

  prepend mod
end
translate_me(*methods) click to toggle source
# File lib/form_translation/for_model.rb, line 29
def translate_me *methods
  store FormTranslation.translation_column
  methods.each do |m|
    FormTranslation.foreign_languages.each do |l|
      store_accessor FormTranslation.translation_column, "#{l}_#{m}".to_sym
    end
  end

  self.class.class_exec do
    define_method :translated_attrs do
      methods
    end

    define_method :form_translations do
      FormTranslation.foreign_languages.collect do |f|
        methods.collect do |m|
          "#{f}_#{m}".to_sym
        end
      end.flatten
    end
  end
  create_translated_getters(methods)
end
translation_names_for(*attributes) click to toggle source
# File lib/form_translation/for_model.rb, line 67
def translation_names_for *attributes
  Array(attributes).flatten.collect do |a|
    FormTranslation.foreign_languages.collect do |f|
      "#{f}_#{a}".to_sym
    end
  end.flatten
end