Sha256: f962cf6ac95652e128307d7dceee939c63393745f1aaa351f21bbb43d5abd5d4

Contents?: true

Size: 938 Bytes

Versions: 8

Compression:

Stored size: 938 Bytes

Contents

module Museum
  class Case < ::ApplicationRecord
    validates_presence_of :name

    has_many :case_details, class_name: 'Museum::CaseDetail', foreign_key: :museum_case_id

    after_create :freshen
    after_update :freshen_if_expired

    def freshen_if_expired
      if expired?
        freshen
      else
        self
      end
    end

    def expired?
      updated_at < (Time.now - Museum.configuration.refresh_interval).to_datetime
    end

    def freshen
      for lens in Museum::Loupe.all
        # puts lens.magnify(self).inspect
        lens.magnify(self).each do |key, value|
          case_details.update_or_create_by( {museum_loupe_id: lens.id, key: key}, {value: value.to_s} )
        end
      end
      unless new_record?
        touch
        reload
      else
        self
      end
    end

    def to_param
      name
    end

    def loupe(slug)
      case_details.find_all_by_loupe_slug(slug)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
museum-0.5.8 app/models/museum/case.rb
museum-0.5.7 app/models/museum/case.rb
museum-0.5.6 app/models/museum/case.rb
museum-0.5.4 app/models/museum/case.rb
museum-0.5.3 app/models/museum/case.rb
museum-0.5.2 app/models/museum/case.rb
museum-0.5.1 app/models/museum/case.rb
museum-0.5.0 app/models/museum/case.rb