Sha256: 89a2ac975dc5e49e07054e175c59db1524bae623bfcd550d6807032b629b7558

Contents?: true

Size: 959 Bytes

Versions: 4

Compression:

Stored size: 959 Bytes

Contents

require 'mongoid'

class Tengine::Resource::VirtualServerImage
  include Mongoid::Document
  include Mongoid::Timestamps
  include Tengine::Core::Validation
  include Tengine::Core::FindByName

  field :name, :type => String
  field :description, :type => String
  field :provided_id, :type => String
  field :provided_description, :type => String

  belongs_to :provider, :inverse_of => :virtual_server_images, :index => true,
    :class_name => "Tengine::Resource::Provider"

  validates :name, :presence => true, :uniqueness => true, :format => BASE_NAME.options
  index({ name: 1 }, { unique: true })

  index description: 1
  index description: -1
  index provided_description: 1
  index provided_description: -1
  index provided_id: 1
  index provided_id: -1

  class << self
    def find_or_create_by_name!(attrs = {}, &block)
      result = self.where({:name => attrs[:name]}).first
      result ||= self.create!(attrs)
      result
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tengine_resource-1.2.2 lib/tengine/resource/virtual_server_image.rb
tengine_resource-1.2.1 lib/tengine/resource/virtual_server_image.rb
tengine_resource-1.2.0 lib/tengine/resource/virtual_server_image.rb
tengine_resource-1.1.0 lib/tengine/resource/virtual_server_image.rb