Para usar Ruby On Rails hubieras manejado el generador de esquemas que trae el framework basado en migraciones, asi tu esquema siempre esta sincronizado con tu aplicación.
En cuanto a lo del primary key, como dije puedes configurarlo en el modelo, y si es necesario ya que es la forma en la que se distinguen los registros unos de otros. Si utilizas una columna que no sea 'id' como llave primary, puedes asignar la variable 'primary_key' en el modelo, y quedaria algo así:
Código ruby:
Ver originalclass Modelo < ActiveRecord::Base
self.primary_key = 'codigo' # nombre de la columna que se utilizara como llave primaria
end
En activerecord si es necesaria ya que la utiliza para muchas cosas, al guardar un registro la base de datos te regresa el primary key del registro que creaste y de esa forma el ORM lo toma y llena el modelo con los datos.