Module: Globalize::Model::ActiveRecord

Defined in:
lib/globalize/model/active_record.rb,
lib/globalize/model/active_record/translated.rb

Defined Under Namespace

Modules: Translated

Class Method Summary collapse

Class Method Details

.create_proxy_class(klass) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/globalize/model/active_record.rb', line 10

def create_proxy_class(klass)
  short_name = klass.name.gsub(/.+::/, '')
  klass.parent.const_set "#{short_name}Translation", Class.new(::ActiveRecord::Base){
    set_table_name "#{klass.name}Translation".pluralize.underscore.gsub('/', '_')
    belongs_to "#{short_name.underscore}".intern, :class_name => klass.name, :foreign_key => "#{short_name.underscore}_id"
    
    def locale
      read_attribute(:locale).to_sym
    end
    
    def locale=(locale)
      write_attribute(:locale, locale.to_s)
    end
  }
end

.define_accessors(klass, attr_names) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/globalize/model/active_record.rb', line 26

def define_accessors(klass, attr_names)
  attr_names.each do |attr_name|
    klass.send :define_method, attr_name, lambda {
      globalize.fetch self.class.locale, attr_name
    }
    klass.send :define_method, "#{attr_name}=", lambda {|val|
      globalize.stash self.class.locale, attr_name, val
      self[attr_name] = val
    }
  end
end