class Translatable::Base

Attributes

fields[R]
or_name[R]
origin_key[R]
origin_reflection_name[R]
t_model[R]
translation_model[R]

Public Class Methods

new(origin_model) click to toggle source
# File lib/translatable/base.rb, line 5
def initialize origin_model
  @origin_model = origin_model
end

Public Instance Methods

class_name(model_name) click to toggle source
# File lib/translatable/base.rb, line 14
def class_name(model_name)
  @translation_model = prepare_model model_name
end
field(*args) click to toggle source

API

# File lib/translatable/base.rb, line 10
def field(*args)
  (@fields ||= []) << set_mapping(*args)
end
foreign_key(key_name) click to toggle source
# File lib/translatable/base.rb, line 18
def foreign_key(key_name)
  @origin_key = key_name.to_sym
end
locale_column() click to toggle source
# File lib/translatable/base.rb, line 46
def locale_column
  @locale_column || (@locale_column = :locale)
end
locale_key(key_name, opts = {}) click to toggle source
# File lib/translatable/base.rb, line 26
def locale_key(key_name, opts = {})
  set_mapping key_name, opts
  @locale_column = key_name.to_sym
end
mapping() click to toggle source
# File lib/translatable/base.rb, line 50
def mapping
  unless @mapping_defined
    (@mapping ||= {})[locale_column] ||= :locale
    @mapping_defined = true
  end
  @mapping || {}
end
reflection_name(reflection) click to toggle source
# File lib/translatable/base.rb, line 22
def reflection_name(reflection)
  @origin_reflection_name = reflection.to_sym
end

Protected Instance Methods

origin_class_name() click to toggle source
# File lib/translatable/base.rb, line 65
def origin_class_name
  @origin_model.name
end
prepare_model(model_name = nil) click to toggle source
# File lib/translatable/base.rb, line 69
def prepare_model(model_name = nil)
  model_constant = model_name ? model_name.to_s.camelize : "Translated#{origin_class_name}"
  model_constant.constantize
end
set_mapping(attribute, options = {}) click to toggle source
# File lib/translatable/base.rb, line 60
def set_mapping attribute, options = {}
  (@mapping ||= {})[attribute.to_sym] = options.delete(:as) || attribute rescue attribute
  return attribute, options
end