module Elasticsearch::Model::Globalize::MultipleFields
Public Class Methods
included(base)
click to toggle source
# File lib/elasticsearch/model/globalize/multiple_fields.rb, line 5 def self.included(base) base.class_eval do class << self def locales @locales ||= I18n.available_locales end end locales.each do |locale| translated_attribute_names.each do |name| localized_name = MultipleFields.localized_name(name, locale) class_eval <<-METHOD, __FILE__, __LINE__ + 1 # Define getter def #{localized_name} globalize.stash.contains?(:#{locale}, '#{name}') ? globalize.stash[:#{locale}]['#{name}'] : translation_for(:#{locale}, false).try(:read_attribute, '#{name}') end METHOD class_eval <<-METHOD, __FILE__, __LINE__ + 1 # Define setter def #{localized_name}=(val) attribute_will_change!(:#{localized_name}) write_attribute('#{name}', val, locale: :#{locale}) end METHOD end end translated_attribute_names.each do |name| class_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{name}=(val) attribute_will_change!(::Elasticsearch::Model::Globalize::MultipleFields.localized_name('#{name}', ::Globalize.locale)) write_attribute('#{name}', val) end METHOD end def __elasticsearch__ &block unless @__elasticsearch__ @__elasticsearch__ = ::Elasticsearch::Model::Proxy::InstanceMethodsProxy.new(self) @__elasticsearch__.extend Elasticsearch::Model::Globalize::MultipleFields::InstanceMethods end @__elasticsearch__.instance_eval(&block) if block_given? @__elasticsearch__ end end end
locales()
click to toggle source
# File lib/elasticsearch/model/globalize/multiple_fields.rb, line 8 def locales @locales ||= I18n.available_locales end
localized_name(name=nil, locale=nil, &block)
click to toggle source
# File lib/elasticsearch/model/globalize/multiple_fields.rb, line 53 def self.localized_name(name=nil, locale=nil, &block) @localizer = block if block_given? @localizer ? @localizer.call(name, locale) : "#{name}_#{locale}" end
Public Instance Methods
__elasticsearch__(&block)
click to toggle source
# File lib/elasticsearch/model/globalize/multiple_fields.rb, line 42 def __elasticsearch__ &block unless @__elasticsearch__ @__elasticsearch__ = ::Elasticsearch::Model::Proxy::InstanceMethodsProxy.new(self) @__elasticsearch__.extend Elasticsearch::Model::Globalize::MultipleFields::InstanceMethods end @__elasticsearch__.instance_eval(&block) if block_given? @__elasticsearch__ end