diff --git a/lib/mobility/backends/active_record/pg_hash.rb b/lib/mobility/backends/active_record/pg_hash.rb index ac4d6c432..4c90c7560 100644 --- a/lib/mobility/backends/active_record/pg_hash.rb +++ b/lib/mobility/backends/active_record/pg_hash.rb @@ -25,8 +25,7 @@ def translations end setup do |attributes, options = {}| - affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" - attributes.each { |attribute| store (affix % attribute), coder: Coder } + attributes.each { |attribute| store (options[:column_affix] % attribute), coder: Coder } end class Coder diff --git a/lib/mobility/backends/active_record/pg_query_methods.rb b/lib/mobility/backends/active_record/pg_query_methods.rb index 6bb73e62f..0a262cc9f 100644 --- a/lib/mobility/backends/active_record/pg_query_methods.rb +++ b/lib/mobility/backends/active_record/pg_query_methods.rb @@ -35,7 +35,7 @@ module PgQueryMethods def initialize(attributes, options) super @arel_table = options[:model_class].arel_table - @column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" + @column_affix = options[:column_affix] q = self diff --git a/lib/mobility/backends/active_record/serialized.rb b/lib/mobility/backends/active_record/serialized.rb index 3ce9f131d..8740bcf70 100644 --- a/lib/mobility/backends/active_record/serialized.rb +++ b/lib/mobility/backends/active_record/serialized.rb @@ -37,14 +37,14 @@ class ActiveRecord::Serialized # @option (see Backends::Serialized.configure) # @raise (see Backends::Serialized.configure) def self.configure(options) + super Serialized.configure(options) end # @!endgroup setup do |attributes, options| coder = { yaml: YAMLCoder, json: JSONCoder }[options[:format]] - column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" - attributes.each { |attribute| serialize (column_affix % attribute), coder } + attributes.each { |attribute| serialize (options[:column_affix] % attribute), coder } end setup_query_methods(QueryMethods) diff --git a/lib/mobility/backends/hash_valued.rb b/lib/mobility/backends/hash_valued.rb index eeedd17a0..6786e4294 100644 --- a/lib/mobility/backends/hash_valued.rb +++ b/lib/mobility/backends/hash_valued.rb @@ -15,7 +15,7 @@ module HashValued # name from attribute name def initialize(_model, _attribute, options = {}) super - @column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" + @column_affix = options[:column_affix] end # @!group Backend Accessors @@ -36,6 +36,16 @@ def each_locale translations.each { |l, _| yield l } end + def self.included(backend_class) + backend_class.extend ClassMethods + end + + module ClassMethods + def configure(options) + options[:column_affix] = "#{options[:column_prefix]}%s#{options[:column_suffix]}" + end + end + private def column_name diff --git a/lib/mobility/backends/sequel/pg_hash.rb b/lib/mobility/backends/sequel/pg_hash.rb index 70113ab3b..0d879fde2 100644 --- a/lib/mobility/backends/sequel/pg_hash.rb +++ b/lib/mobility/backends/sequel/pg_hash.rb @@ -35,8 +35,7 @@ def translations end setup do |attributes, options| - column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" - columns = attributes.map { |attribute| (column_affix % attribute).to_sym } + columns = attributes.map { |attribute| (options[:column_affix] % attribute).to_sym } before_validation = Module.new do define_method :before_validation do @@ -48,7 +47,7 @@ def translations end include before_validation include Mobility::Sequel::HashInitializer.new(*columns) - include Mobility::Sequel::ColumnChanges.new(attributes, column_affix: column_affix) + include Mobility::Sequel::ColumnChanges.new(attributes, column_affix: options[:column_affix]) plugin :defaults_setter columns.each { |column| default_values[column] = {} } diff --git a/lib/mobility/backends/sequel/pg_query_methods.rb b/lib/mobility/backends/sequel/pg_query_methods.rb index e71f94b2b..d7a0cba66 100644 --- a/lib/mobility/backends/sequel/pg_query_methods.rb +++ b/lib/mobility/backends/sequel/pg_query_methods.rb @@ -30,7 +30,7 @@ module PgQueryMethods def initialize(attributes, options) super - @column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" + @column_affix = options[:column_affix] define_query_methods end diff --git a/lib/mobility/backends/sequel/serialized.rb b/lib/mobility/backends/sequel/serialized.rb index 216b94385..a4a9fafd6 100644 --- a/lib/mobility/backends/sequel/serialized.rb +++ b/lib/mobility/backends/sequel/serialized.rb @@ -43,14 +43,14 @@ class Sequel::Serialized # @option (see Backends::Serialized.configure) # @raise (see Backends::Serialized.configure) def self.configure(options) + super Serialized.configure(options) end # @!endgroup setup do |attributes, options| format = options[:format] - column_affix = "#{options[:column_prefix]}%s#{options[:column_suffix]}" - columns = attributes.map { |attribute| (column_affix % attribute).to_sym } + columns = attributes.map { |attribute| (options[:column_affix] % attribute).to_sym } plugin :serialization plugin :serialization_modification_detection