Custom schema_migrations table name

Hi all,

I have more rails apps sharing the same database and this creates problems with schema_migrations table.

Do you know haw to customize that table name (so every app uses a different one)? Or there’s a better approach to this situation?


Hi Tommaso,

You can set table_name inside rails model.

hi sandip, thanks for the answer, but the problem isn’t using different tables, but avoid using the same schema_migrations table automatically generated by rails. I need to use the same database to share most tables, but different apps have some tables which should be shared so every app has its migrations, which causes a lot of problems because all the apps use the schema_migrations table

If you have to do things in such a chaotic and unorganized way with
multiple apps then get clever and just include all migrations from all
other apps in the other apps and flag them with comments at the top
that state they are there to keep schema_migrations happy, you don't
need the models at all and rails will detect the tables already exist
and the migrations have already ran and not run them.

If you just want to share models, you can add the other project models folder into your autoload paths:

rails new test1

rails new test2

cd test1

rails g model User

cd test2


mkdir db/migrate

cp ../test1/db/migrate/*_create_users.rb db/
mv db/*_create_users.rb db/migrate/

rake db:migrate

i hope help to us…

It looks like that table name is controlled by ActiveRecord::Base.schema_migrations_table_name. You might also be interested in the table_name_prefix setting which adds a prefix to all table names (including schema migrations) so that you can’t have any clashes