Module: Wakari::Proxy::Model::ClassMethods

Defined in:
lib/wakari/models/proxy/model.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_proxy(translation_class, association_name, options) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/wakari/models/proxy/model.rb', line 12

def acts_as_proxy(translation_class, association_name, options)
  lang_methods = translation_class._locales.collect do |lang|
                   method = lang.to_method
                   class_eval "                     def \#{method}\n                       translation?(\\\"\#{lang.code}\\\")\n                     end\n                     def \#{method}=(params={})\n                       detect_translation(\\\"\#{lang.code}\\\").tap do |t|\n                         t.attributes = params.delete_if {|k| k.to_s == \\\"locale\\\"}\n                       end\n                     end\n                   EOV\n                    method\n                 end\n  attr_accessible *lang_methods\n  delegate *translation_class._meta_attributes, :to => :current_translation, :allow_nil => true\n  delegate *translation_class._meta_attributes.collect {|attribute| \"\#{attribute}=\"}, :to => :detect_current_translation, :allow_nil => true\n  \n  if self < Wakari::Proxy::Base\n    define_method :translations do |*args|\n      content.send(association_name, *args)\n    end\n  end\n  \nend\n"