Must rails make id field as primary key when we create database table?

As subject. Thanks!

No you can use primary_key method

but if it isn't a legacy app why make more work for yourself and break conventions.

If you mean when you use create_table in a migration, the method accepts an :id => false option - as stated in the API: ActiveRecord::ConnectionAdapters::SchemaStatements