Class: SingleTableGlobalize3::ActiveRecord::Translation

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/single_table_globalize3/active_record/translation.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.attribute(attribute) ⇒ Object



27
28
29
30
# File 'lib/single_table_globalize3/active_record/translation.rb', line 27

def attribute(attribute)
  attribute = attribute.to_s
  where :attribute_name => attribute
end

.attribute_translations(attribute) ⇒ Object



32
33
34
35
36
# File 'lib/single_table_globalize3/active_record/translation.rb', line 32

def attribute_translations(attribute)
  attribute(attribute).inject(HashWithIndifferentAccess.new) do |hash, translation|
    hash.update(translation.locale => translation.value)
  end
end

.translated_localesObject



23
24
25
# File 'lib/single_table_globalize3/active_record/translation.rb', line 23

def translated_locales
  select('DISTINCT locale').map(&:locale).sort { |l,r| l.to_s <=> r.to_s }
end

.with_locales(*locales) ⇒ Object Also known as: with_locale



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

def with_locales(*locales)
  # Avoid using "IN" with SQL queries when only using one locale.
  locales = locales.flatten.map(&:to_s)
  locales = locales.first if locales.one?
  where :locale => locales
end

Instance Method Details

#localeObject



39
40
41
42
# File 'lib/single_table_globalize3/active_record/translation.rb', line 39

def locale
  _locale = read_attribute :locale
  _locale.present? ? _locale.to_sym : _locale
end

#locale=(locale) ⇒ Object



44
45
46
# File 'lib/single_table_globalize3/active_record/translation.rb', line 44

def locale=(locale)
  write_attribute :locale, locale.to_s
end