Sha256: 6af4286901e0718ae0b6097e07c3ad571c69b39565bd0fd4bf000cfbeb64a582

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

module Rosetta
  class Locale < ApplicationRecord
    class_attribute :registered_classes_for_translations, default: []

    CODE_FORMAT = /\A[a-zA-Z]+(-[a-zA-Z]+)?\z/

    validates :name, :code, presence: true
    validates :code, uniqueness: true
    validates :code, format: { with: CODE_FORMAT, message: "must only contain letters separated by an optional dash" }

    has_many :text_entries, dependent: :destroy
    after_create_commit :notify_translated_models

    class << self
      def available_locales
        all
      end

      def build_as_default(params)
        new(params.merge(default: true))
      end

      def default_locale
        @default_locale ||= find_by(default: true)
      end

      def default_locale=(locale)
        @default_locale = locale
      end
      def register_class_for_translation(klass)
        registered_classes_for_translations << klass
      end
    end

    def notify_translated_models
      registered_classes_for_translations.each { |klass| klass.translated_in(self) }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rosetta-rails-0.2.1 app/models/rosetta/locale.rb
rosetta-rails-0.2.0 app/models/rosetta/locale.rb