ontology_version.rb revision 631f43db46ad7d375010c3169c81764eb27270a3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass OntologyVersion < ActiveRecord::Base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync include OntologyVersion::Async
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync include OntologyVersion::Download
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync include OntologyVersion::Parsing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync belongs_to :user
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync belongs_to :ontology, :counter_cache => :versions_count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mount_uploader :raw_file, OntologyUploader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mount_uploader :xml_file, OntologyUploader
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync attr_accessible :raw_file, :source_uri
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync validate :raw_file_xor_source_uri, :on => :create
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# validate :raw_file_size_maximum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync validates_format_of :source_uri,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync :with => URI::regexp(ALLOWED_URI_SCHEMAS), :if => :source_uri?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync scope :latest, order('id DESC')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync scope :state, ->(state) { where :state => state }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync scope :done, state('done')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # updated_at of the latest version
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def self.last_updated_at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync latest.first.try(:updated_at)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncprotected
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def raw_file_xor_source_uri
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if !(raw_file.blank? ^ source_uri.blank?)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync errors.add :source_uri, 'Specify either a source file or URI.'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def raw_file_size_maximum
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if raw_file.size > 10.megabytes.to_i
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync errors.add :raw_file, 'The maximum file size is 10M.'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncend
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync