This question already has an answer here:
I'm using ActiveRecord in a ruby project without rails. I need to define composite primary key for a table.Normally migration creates primary key automatically. Is it possible to define my own composite primary key for a table using active record?
Question has been asked before, checkout: How to set composite key in Rails application
http://compositekeys.rubyforge.org/ might also be useful.
There are some gems that give you this ability, such as composite_primary_key.
I don't know if Rails 4 has added support for this, would be very interested to hear if it does.