class Orphanage::InitGenerator

Public Instance Methods

create_migration() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 36
def create_migration
  puts "creating migration file..."
  migration_file_name = "#{Time.now.utc.strftime("%Y%m%d%H%M%S")}_create_#{home_file_name}_temps.rb"
  template "migration.rb.erb", "db/migrate/#{migration_file_name}"
end
ensure_home_model_and_table_exists() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 12
def ensure_home_model_and_table_exists

  begin
    home_model
  rescue NameError => e
    fail "Home model not found. Plese generate it first."
  end

  table_exists = ActiveRecord::Base.connection.data_source_exists? home_table_name
  fail "table #{home_table_name} does not exist. Stopping." if !table_exists

end
generate_model() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 25
def generate_model
  generate "model #{home_model_name}Temp --skip-migration"

end
orphanize_model() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 30
def orphanize_model
  # change the model to be an orphan model
  puts "replacing model..."
  template "model.rb.erb", "app/models/#{home_file_name}_temp.rb", force: true
end

Private Instance Methods

home_file_name() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 48
def home_file_name
  home_model_name.underscore
end
home_model() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 44
def home_model
  home_model_name.constantize
end
home_table_name() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 52
def home_table_name
  home_file_name.pluralize
end
migration_columns() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 60
def migration_columns
  # get all column names
  needed_cols = home_model.columns.select { |col| !%w(id created_at updated_at).include? col.name }

  # returns an array of strings each representing a single column to add in the migration.
  migrations = needed_cols.map {|col| "t.#{col.type} :#{col.name}, null: #{col.null}" }

  return migrations

end
orphan_table_name() click to toggle source
# File lib/generators/orphanage/init_generator.rb, line 56
def orphan_table_name
  (home_model_name + "Temp").underscore.pluralize
end