Module: Aven::Model::TenantModel::ClassMethods
- Defined in:
- lib/aven/model/tenant_model.rb
Instance Method Summary collapse
-
#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.
-
#workspace_association_name ⇒ Object
Returns the association name that Workspace will use for this model Example: Server => :servers, DnsCredential => :dns_credentials.
-
#workspace_optional! ⇒ Object
Make workspace association optional Call this in your model if workspace can be nil.
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
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_name ⇒ Object
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).[:optional] = true end |