- @cache = DistributedCache.new('theme')
- belongs_to :user
- belongs_to :color_scheme
- has_many :theme_fields, dependent: :destroy
- has_many :theme_settings, dependent: :destroy
- has_many :theme_translation_overrides, dependent: :destroy
- has_many :child_theme_relation, class_name: 'ChildTheme', foreign_key: 'parent_theme_id', dependent: :destroy
- has_many :parent_theme_relation, class_name: 'ChildTheme', foreign_key: 'child_theme_id', dependent: :destroy
- has_many :child_themes, -> { order(:name) }, through: :child_theme_relation, source: :child_theme
- has_many :parent_themes, -> { order(:name) }, through: :parent_theme_relation, source: :parent_theme
- has_many :color_schemes
- belongs_to :remote_theme, dependent: :destroy
- has_one :theme_modifier_set, dependent: :destroy
- has_one :settings_field, -> { where(target_id: Theme.targets[:settings], name: "yaml") }, class_name: 'ThemeField'
- has_one :javascript_cache, dependent: :destroy
- has_many :locale_fields, -> { filter_locale_fields(I18n.fallbacks[I18n.locale]) }, class_name: 'ThemeField'
- has_many :upload_fields, -> { where(type_id: ThemeField.types[:theme_upload_var]).preload(:upload) }, class_name: 'ThemeField'
- has_many :extra_scss_fields, -> { where(target_id: Theme.targets[:extra_scss]) }, class_name: 'ThemeField'