Sha256: d3a2111629bcdb4bb2374016050c14190e2c2f4e57306912fe664c1406f404ee
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
module Locomotive class Translation include Locomotive::Mongoid::Document include Concerns::Shared::SiteScope include Concerns::Shared::Userstamp ## fields ## field :key field :values, type: Hash, default: {} field :completion, type: Integer, default: 0 ## validations ## validates_uniqueness_of :key, scope: :site_id validates_presence_of :key ## named scopes ## scope :ordered, -> { order_by(key: :asc) } scope :by_id_or_key, ->(id_or_key) { where('$or' => [{ _id: id_or_key }, { key: id_or_key }]) } ## callbacks ## before_validation :underscore_key before_validation :set_completion before_validation :remove_blanks ## indexes ## index site_id: 1, key: 1 index site_id: 1, completion: 1 index site_id: 1, key: 1, completion: 1 ## methods ## def touch_site_attribute :content_version end protected # Make sure the translation key is underscored # since it is the unique way to use it in a liquid template. # def underscore_key if self.key self.key = self.key.permalink(true) end end def set_completion self.completion = values.count { |_, v| v.present? } end def remove_blanks self.values.delete_if { |_, v| v.is_a?(String) && v.empty? } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
locomotivecms-4.2.0.alpha2 | app/models/locomotive/translation.rb |
locomotivecms-4.2.0.alpha1 | app/models/locomotive/translation.rb |