Module: Saasable::Mongoid::ScopedDocument

Defined in:
lib/saasable/mongoid/scoped_document.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/saasable/mongoid/scoped_document.rb', line 4

def self.included(klass)
  klass.extend ClassMethods
  klass.class_eval do
    # Fields
    field :saas_id, type: BSON::ObjectId, default: -> { Saasable::Mongoid::SaasDocument.active_saas._id }

    # Default scope
    default_scope do
      if Saasable::Mongoid::SaasDocument.active_saas
        where(saas_id: Saasable::Mongoid::SaasDocument.active_saas._id)
      else
        all
      end
    end

    # Indexes
    index(saas_id: 1)
    index({saas_id: 1, _id: 1}, unique: true)

    class << self
      alias_method :index_without_saasable, :index
      alias_method :index, :index_with_saasable
    end
  end
end

Instance Method Details

#saasObject



34
35
36
# File 'lib/saasable/mongoid/scoped_document.rb', line 34

def saas
  @saas ||= Saasable::Mongoid::SaasDocument.saas_document.find(saas_id) if saas_id
end

#saas=(a_saas) ⇒ Object



30
31
32
# File 'lib/saasable/mongoid/scoped_document.rb', line 30

def saas=(a_saas)
  self.saas_id = a_saas._id
end