class PgShrink::SubTableOperator

Attributes

database[RW]
parent[RW]
table_name[RW]

Public Class Methods

new(parent, table_name, opts = {}) click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 20
def initialize(parent, table_name, opts = {})
  self.parent = parent
  self.table_name = table_name
  self.database = parent.database
  @opts = default_opts.merge(opts)

  validate_opts!(@opts)
end

Public Instance Methods

default_opts() click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 4
def default_opts
  {
    :foreign_key =>
    "#{ActiveSupport::Inflector.singularize(parent.table_name.to_s)}_id",
    :primary_key => :id
  }
end
name() click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 12
def name
  "#{table_name} #{self.class.name.demodulize} from #{parent.table_name}"
end
propagate!(old_parent_data, new_parent_data) click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 31
def propagate!(old_parent_data, new_parent_data)
  raise "Implement in subclass"
end
table() click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 16
def table
  database.table(table_name)
end
validate_opts!(opts) click to toggle source
# File lib/pg_shrink/sub_table_operator.rb, line 29
def validate_opts!(opts); end