Module: Mobility::Backends::KeyValue
- Included in:
- ActiveRecord::KeyValue, Sequel::KeyValue
- Defined in:
- lib/mobility/backends/key_value.rb
Overview
Stores attribute translation as attribute/value pair on a shared translations table, using a polymorphic relationship between a translation class and models using the backend. By default, two tables are assumed to be present supporting string and text translations: a mobility_text_translations
table for text-valued translations and a string_translations
table for string-valued translations (the only difference being the column type of the value
column on the table).
Backend Options
type
Currently, either :text
or :string
is supported, but any value is allowed as long as a corresponding class_name
can be found (see below). Determines which class to use for translations, which in turn determines which table to use to store translations (by default text_translations
for text type, string_translations
for string type).
class_name
Class to use for translations when defining association. By default, ActiveRecord::TextTranslation or ActiveRecord::StringTranslation for ActiveRecord models (similar for Sequel models). If string is passed in, it will be constantized to get the class.
association_name
Name of association on model. Defaults to <type>_translations, which will typically be either :text_translations
(if type
is :text
) or +:string_translations (if type
is :string
). If specified, ensure name does not overlap with other methods on model or with the association name used by other backends on model (otherwise one will overwrite the other).
Defined Under Namespace
Modules: Cache, ClassMethods
Backend Accessors collapse
-
#read(locale, **options) ⇒ Object
Gets the translated value for provided locale from configured backend.
-
#write(locale, value, **options) ⇒ Object
Updates translation for provided locale without calling backend’s methods to persist the changes.
Instance Method Summary collapse
-
#association_name ⇒ Symbol
Returns the name of the polymorphic association.
-
#class_name ⇒ Class
Returns translation class used in polymorphic association.
-
#each_locale {|Locale| ... } ⇒ Object
Yields locales available for this attribute.
Instance Method Details
#association_name ⇒ Symbol
Returns the name of the polymorphic association.
|
# File 'lib/mobility/backends/key_value.rb', line 47
|
#class_name ⇒ Class
Returns translation class used in polymorphic association.
|
# File 'lib/mobility/backends/key_value.rb', line 51
|
#each_locale {|Locale| ... } ⇒ Object
Yields locales available for this attribute.
68 69 70 |
# File 'lib/mobility/backends/key_value.rb', line 68 def each_locale translations.each { |t| yield(t.locale.to_sym) if t.send(key_column) == attribute } end |
#read(locale, **options) ⇒ Object
Gets the translated value for provided locale from configured backend.
57 58 59 |
# File 'lib/mobility/backends/key_value.rb', line 57 def read(locale, **) translation_for(locale, **).send(value_column) end |
#write(locale, value, **options) ⇒ Object
Updates translation for provided locale without calling backend’s methods to persist the changes.
62 63 64 |
# File 'lib/mobility/backends/key_value.rb', line 62 def write(locale, value, **) translation_for(locale, **).send(:"#{value_column}=", value) end |