class Mobility::Backends::Sequel::Column

Implements the {Mobility::Backends::Column} backend for Sequel models.

Public Class Methods

build_op(attr, locale) click to toggle source
# File lib/mobility/backends/sequel/column.rb, line 35
def self.build_op(attr, locale)
  ::Sequel::SQL::QualifiedIdentifier.new(model_class.table_name,
                                         Column.column_name_for(attr, locale))
end

Public Instance Methods

each_locale() { |l| ... } click to toggle source

@!macro backend_iterator

# File lib/mobility/backends/sequel/column.rb, line 31
def each_locale
  available_locales.each { |l| yield(l) if present?(l) }
end
read(locale, _options = nil) click to toggle source

@!group Backend Accessors @!macro backend_reader

# File lib/mobility/backends/sequel/column.rb, line 18
def read(locale, _options = nil)
  column = column(locale)
  model[column] if model.columns.include?(column)
end
write(locale, value, _options = nil) click to toggle source

@!group Backend Accessors @!macro backend_writer

# File lib/mobility/backends/sequel/column.rb, line 25
def write(locale, value, _options = nil)
  column = column(locale)
  model[column] = value if model.columns.include?(column)
end

Private Instance Methods

available_locales() click to toggle source
# File lib/mobility/backends/sequel/column.rb, line 42
def available_locales
  @available_locales ||= get_column_locales
end
get_column_locales() click to toggle source
# File lib/mobility/backends/sequel/column.rb, line 46
def get_column_locales
  column_name_regex = /\A#{attribute}_([a-z]{2}(_[a-z]{2})?)\z/.freeze
  model.columns.map do |c|
    (match = c.to_s.match(column_name_regex)) && match[1].to_sym
  end.compact
end