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 |