Module: Globalize::ActiveRecord::ClassMethods

Defined in:
lib/globalize/active_record/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#required_attributesObject



39
40
41
42
# File 'lib/globalize/active_record/class_methods.rb', line 39

def required_attributes
  warn 'required_attributes is deprecated and will be removed in the next release of Globalize.'
  validators.map { |v| v.attributes if v.is_a?(ActiveModel::Validations::PresenceValidator) }.flatten
end

#required_translated_attributesObject



44
45
46
47
# File 'lib/globalize/active_record/class_methods.rb', line 44

def required_translated_attributes
  warn 'required_translated_attributes is deprecated and will be removed in the next release of Globalize.'
  translated_attribute_names & required_attributes
end

#translated?(name) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/globalize/active_record/class_methods.rb', line 35

def translated?(name)
  translated_attribute_names.include?(name.to_sym)
end

#translated_column_name(name) ⇒ Object



66
67
68
# File 'lib/globalize/active_record/class_methods.rb', line 66

def translated_column_name(name)
  "#{translation_class.table_name}.#{name}"
end

#translation_classObject



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/globalize/active_record/class_methods.rb', line 49

def translation_class
  @translation_class ||= begin
    if self.const_defined?(:Translation, false)
      klass = self.const_get(:Translation, false)
    else
      klass = self.const_set(:Translation, Class.new(Globalize::ActiveRecord::Translation))
    end

    klass.belongs_to :globalized_model, :class_name => self.name, :foreign_key => translation_options[:foreign_key]
    klass
  end
end

#translations_table_nameObject



62
63
64
# File 'lib/globalize/active_record/class_methods.rb', line 62

def translations_table_name
  translation_class.table_name
end

#with_locales(*locales) ⇒ Object



6
7
8
# File 'lib/globalize/active_record/class_methods.rb', line 6

def with_locales(*locales)
  all.merge translation_class.with_locales(*locales)
end

#with_required_attributesObject



21
22
23
24
25
26
# File 'lib/globalize/active_record/class_methods.rb', line 21

def with_required_attributes
  warn 'with_required_attributes is deprecated and will be removed in the next release of Globalize.'
  required_translated_attributes.inject(all) do |scope, name|
    scope.where("#{translated_column_name(name)} IS NOT NULL")
  end
end

#with_translated_attribute(name, value, locales = Globalize.fallbacks) ⇒ Object



28
29
30
31
32
33
# File 'lib/globalize/active_record/class_methods.rb', line 28

def with_translated_attribute(name, value, locales = Globalize.fallbacks)
  with_translations.where(
    translated_column_name(name)    => value,
    translated_column_name(:locale) => Array(locales).map(&:to_s)
  )
end

#with_translations(*locales) ⇒ Object



14
15
16
17
18
19
# File 'lib/globalize/active_record/class_methods.rb', line 14

def with_translations(*locales)
  locales = translated_locales if locales.empty?
  preload(:translations).joins(:translations).readonly(false).with_locales(locales).tap do |query|
    query.distinct! unless locales.flatten.one?
  end
end

#with_where(opts = {}) ⇒ Object



10
11
12
# File 'lib/globalize/active_record/class_methods.rb', line 10

def with_where(opts = {})
  all.merge translation_class.where(opts)
end