app/models/rosetta/locale.rb in rosetta-rails-0.1.1 vs app/models/rosetta/locale.rb in rosetta-rails-0.2.0
- old
+ new
@@ -1,31 +1,39 @@
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 :translations, dependent: :destroy
+ has_many :text_entries, dependent: :destroy
+ after_create_commit :notify_translated_models
class << self
def available_locales
- [ Locale.default_locale ] + all
+ all
end
+ def build_as_default(params)
+ new(params.merge(default: true))
+ end
+
def default_locale
- @default_locale ||= new(Rosetta.config.default_locale.to_h).as_default
+ @default_locale ||= find_by(default: true)
end
- end
- def default_locale?
- @default
+ def default_locale=(locale)
+ @default_locale = locale
+ end
+ def register_class_for_translation(klass)
+ registered_classes_for_translations << klass
+ end
end
- def as_default
- @default = true
- readonly!
- self
+ def notify_translated_models
+ registered_classes_for_translations.each { |klass| klass.translated_in(self) }
end
end
end