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

As subject. Thanks!

No you can use primary_key method

http://www.robbyonrails.com/articles/2006/04/14/sneaking-rails-through-the-legacy-system

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