class YeetDb::ArColumn
Attributes
column_name[RW]
table_name[RW]
tables[RW]
Public Class Methods
new(column_name:, table_name:, tables:)
click to toggle source
# File lib/yeet_db/ar_column.rb, line 5 def initialize(column_name:, table_name:, tables:) @column_name = column_name @table_name = table_name @tables = tables end
Public Instance Methods
association()
click to toggle source
# File lib/yeet_db/ar_column.rb, line 31 def association model && model.reflections[association_name] end
association_klass()
click to toggle source
# File lib/yeet_db/ar_column.rb, line 15 def association_klass model && model.reflections[association_name]&.klass end
association_name()
click to toggle source
# File lib/yeet_db/ar_column.rb, line 23 def association_name column_name.name.gsub(/_id\z/, '') end
association_table_name()
click to toggle source
# File lib/yeet_db/ar_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_db/ar_column.rb, line 39 def foreign_key_exists? ActiveRecord::Migration.foreign_key_exists?(table_name, column: column_name.name) end
guessed_table_name()
click to toggle source
# File lib/yeet_db/ar_column.rb, line 43 def guessed_table_name @guessed_table_name ||= association_name.pluralize end
is_association?()
click to toggle source
# File lib/yeet_db/ar_column.rb, line 11 def is_association? column_name.name =~ /_id\z/ end
model()
click to toggle source
# File lib/yeet_db/ar_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_db/ar_column.rb, line 35 def polymorphic_association? association && association.options[:polymorphic] end