class YeetDba::Column
Attributes
db_column[RW]
table_name[RW]
tables[RW]
Public Class Methods
new(db_column:, table_name:, tables:)
click to toggle source
# File lib/yeet_dba/column.rb, line 5 def initialize(db_column:, table_name:, tables:) @db_column = db_column @table_name = table_name @tables = tables end
Public Instance Methods
association()
click to toggle source
# File lib/yeet_dba/column.rb, line 31 def association model && model.reflections[association_name] end
association_klass()
click to toggle source
# File lib/yeet_dba/column.rb, line 15 def association_klass association&.klass end
association_name()
click to toggle source
# File lib/yeet_dba/column.rb, line 23 def association_name db_column.name.gsub(/_id\z/, '') end
association_table_name()
click to toggle source
# File lib/yeet_dba/column.rb, line 19 def association_table_name association_klass&.table_name || tables.detect { |table| table == guessed_table_name } end
foreign_key_exists?()
click to toggle source
# File lib/yeet_dba/column.rb, line 39 def foreign_key_exists? ActiveRecord::Migration.foreign_key_exists?(table_name, column: db_column.name) end
guessed_table_name()
click to toggle source
# File lib/yeet_dba/column.rb, line 43 def guessed_table_name @guessed_table_name ||= association_name.pluralize end
is_association?()
click to toggle source
# File lib/yeet_dba/column.rb, line 11 def is_association? db_column.name =~ /_id\z/ end
model()
click to toggle source
# File lib/yeet_dba/column.rb, line 27 def model ActiveRecord::Base.descendants.detect { |c| c.table_name == table_name } end
polymorphic_association?()
click to toggle source
# File lib/yeet_dba/column.rb, line 35 def polymorphic_association? association && association.options[:polymorphic] end