Tilo asked:

Legacy Databases / Schema

What do i need to do to tell Og to be careful with pre-existing ('legacy') databases, so that: 1) the schema does not get changed 2) no columns / rows / tables get dropped

Can Og determine the schema of a given MySQL Database, and automatically create a skeleton of matching Class definitions? (without relations ..)

Such a reverse engineered mode would be good for people who want to use a legacy database with Og


(1 attempts)

Kashia answered:

You just have to model the Og classes after the real tables and adapt:

class User
   # To use a different pk
   attr_accessor :id, Fixnum, :primary_key => true
   # custom join tables
   joins_many :pictures, Picture, :through => ModelPics
class ModelPics
   # set the sql table
   set_sql_table "join_table_foo"
   # has_ones are needed to generate the correct relations
   # for example specify a special foreign key
   has_one OgModel, :foreign_key => 'to_model'
   has_one Picture
class Picture

This as an example on how to change the primary key, set sql tables, modeling join tables and using custom foreign keys.

Additional to that, if you want to forbid Og to change the Tables at all:

# Completely shut generating off

Og.create_schema = false

# Control generating

# :add/true meaning columns get added, none removed
# :full meaning columns also get removed

  :evolve_schema => :add

# ..


Rating: 5