Module: Globalize::ActiveRecord::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#required_attributesObject



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

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



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

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)


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

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

#translated_column_name(name) ⇒ Object



59
60
61
# File 'lib/globalize/active_record/class_methods.rb', line 59

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

#translation_classObject



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/globalize/active_record/class_methods.rb', line 43

def translation_class
  @translation_class ||= begin
    klass = self.const_get(:Translation) rescue nil
    if klass.nil? || klass.class_name != (self.class_name + "Translation")
      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], :touch => true
    klass
  end
end

#translations_table_nameObject



55
56
57
# File 'lib/globalize/active_record/class_methods.rb', line 55

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



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

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



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

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



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

def with_translations(*locales)
  locales = translated_locales if locales.empty?
  preload(:translations).joins(:translations).readonly(false).with_locales(locales)
end