Module: Familia::Features::Relationships::Membership::InstanceMethods

Defined in:
lib/familia/features/relationships/membership.rb

Overview

Instance methods for objects with membership relationships

Instance Method Summary collapse

Instance Method Details

#calculate_membership_score(owner_class, collection_name) ⇒ Float

Calculate the appropriate score for a membership relationship

Parameters:

  • owner_class (Class)

    The owner class (e.g., Customer)

  • collection_name (Symbol)

    The collection name (e.g., :domains)

Returns:

  • (Float)

    Calculated score



316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/familia/features/relationships/membership.rb', line 316

def calculate_membership_score(owner_class, collection_name)
  # Find the membership configuration
  membership_config = self.class.membership_relationships.find do |config|
    config[:owner_class] == owner_class && config[:collection_name] == collection_name
  end

  return default_score unless membership_config

  score_calculator = membership_config[:score]

  # Extract the score calculation logic to reduce complexity
  calculated_score = extract_score_from_calculator(score_calculator)
  calculated_score || default_score
end