Class: MermaidRailsErd::AssociationResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/mermaid_rails_erd/association_resolver.rb

Instance Method Summary collapse

Instance Method Details

#resolve(assoc) ⇒ Object



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

def resolve(assoc)
  # Try direct table_name access if available
  if assoc.respond_to?(:table_name)
    begin
      table_name = assoc.table_name
    rescue StandardError
      table_name = nil
    end
  end

  # Determine table name from options or plural_name if not already set
  table_name ||= if assoc.options[:table_name]
                   assoc.options[:table_name].to_s
                 else
                   assoc.plural_name.to_s
                 end

  # Check if table exists
  return nil unless ActiveRecord::Base.connection.table_exists?(table_name)

  # Return a hash with necessary information
  {
    table_name: table_name,
    primary_key: ActiveRecord::Base.connection.primary_key(table_name),
  }
end