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: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#M000604