Module: Gitlab::CloudConnector::DataModel::Associations::ClassMethods

Defined in:
lib/gitlab/cloud_connector/data_model/associations.rb

Instance Method Summary collapse

Instance Method Details

#association_cache_keysObject



12
13
14
# File 'lib/gitlab/cloud_connector/data_model/associations.rb', line 12

def association_cache_keys
  @association_cache_keys ||= associations.map { |a| :"#{a}_association" }
end

#associationsObject



8
9
10
# File 'lib/gitlab/cloud_connector/data_model/associations.rb', line 8

def associations
  @associations ||= []
end

#has_and_belongs_to_many(name) ⇒ Object

rubocop:disable Naming/PredicateName



17
18
19
20
21
22
23
24
25
26
# File 'lib/gitlab/cloud_connector/data_model/associations.rb', line 17

def has_and_belongs_to_many(name)
  associations << name.to_sym

  remove_instance_variable(:@association_cache_keys) if instance_variable_defined?(:@association_cache_keys)

  define_method(name) do
    instance_variable_get(:"@#{name}_association") ||
      instance_variable_set(:"@#{name}_association", load_association_records(name))
  end
end