module Elasticsearch::Model::Globalize::OneIndexPerLanguage
Public Class Methods
included(base)
click to toggle source
# File lib/elasticsearch/model/globalize/one_index_per_language.rb, line 6 def self.included(base) base.class_eval do self.__elasticsearch__.class_eval do include Elasticsearch::Model::Globalize::OneIndexPerLanguage::ClassMethods end class << self [:globalized_mapping, :globalized_mappings, :import_globally, :index_name_base, :index_name_base=, :document_type_base, :document_type_base=].each do |m| delegate m, to: :__elasticsearch__ end end def __elasticsearch__ &block unless @__elasticsearch__ @__elasticsearch__ = ::Elasticsearch::Model::Proxy::InstanceMethodsProxy.new(self) @__elasticsearch__.extend Elasticsearch::Model::Globalize::OneIndexPerLanguage::InstanceMethods end @__elasticsearch__.instance_eval(&block) if block_given? @__elasticsearch__ end before_update :update_existence_of_documents before_save :update_changed_attributes_by_locale end end
localized_name(name=nil, locale=nil, &block)
click to toggle source
# File lib/elasticsearch/model/globalize/one_index_per_language.rb, line 32 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/one_index_per_language.rb, line 18 def __elasticsearch__ &block unless @__elasticsearch__ @__elasticsearch__ = ::Elasticsearch::Model::Proxy::InstanceMethodsProxy.new(self) @__elasticsearch__.extend Elasticsearch::Model::Globalize::OneIndexPerLanguage::InstanceMethods end @__elasticsearch__.instance_eval(&block) if block_given? @__elasticsearch__ end
update_changed_attributes_by_locale()
click to toggle source
# File lib/elasticsearch/model/globalize/one_index_per_language.rb, line 222 def update_changed_attributes_by_locale __elasticsearch__.changed_attributes_by_locale.clear common_changed_attributes = Hash[ changes.map{ |key, value| [key, value.last] } ] translated_attribute_names.each { |k| common_changed_attributes.delete(k) } globalize.stash.reject{ |locale, attrs| attrs.empty? }.each do |locale, attrs| __elasticsearch__.changed_attributes_by_locale[locale] = attrs.merge(common_changed_attributes) end true end
update_existence_of_documents()
click to toggle source
This method actually checks existence of translations in database Therefore, database and elasticsearch must be synced.
# File lib/elasticsearch/model/globalize/one_index_per_language.rb, line 214 def update_existence_of_documents __elasticsearch__.existence_of_documents.clear translations.each do |t| __elasticsearch__.existence_of_documents[t.locale] = true if t.persisted? end true end