Module: Aven::Model::TenantModel::ClassMethods

Defined in:
lib/aven/model/tenant_model.rb

Instance Method Summary collapse

Instance Method Details

#unique_per_workspace?Boolean

Check if this model has a unique workspace constraint Used to determine if Workspace should use has_one vs has_many

Returns:

  • (Boolean)


81
82
83
84
85
86
87
# File 'lib/aven/model/tenant_model.rb', line 81

def unique_per_workspace?
  return false unless table_exists?

  connection.indexes(table_name).any? { |idx|
    idx.unique && idx.columns == [ "workspace_id" ]
  }
end

#workspace_association_nameObject

Returns the association name that Workspace will use for this model Example: Server => :servers, DnsCredential => :dns_credentials



75
76
77
# File 'lib/aven/model/tenant_model.rb', line 75

def workspace_association_name
  name.underscore.pluralize.to_sym
end

#workspace_optional!Object

Make workspace association optional Call this in your model if workspace can be nil

Example:

class DnsCredential < ApplicationRecord
  include Aven::TenantModel
  workspace_optional!
end


69
70
71
# File 'lib/aven/model/tenant_model.rb', line 69

def workspace_optional!
  _reflect_on_association(:workspace).options[:optional] = true
end