Using Rails, how can I set my primary key to not be an integer-typed column?
        Posted  
        
            by Rudd Zwolinski
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Rudd Zwolinski
        
        
        
        Published on 2009-07-29T14:15:19Z
        Indexed on 
            2010/05/13
            7:44 UTC
        
        
        Read the original article
        Hit count: 223
        
I'm using Rails migrations to manage a database schema, and I'm creating a simple table where I'd like to use a non-integer value as the primary key (in particular, a string). To abstract away from my problem, let's say there's a table employees where employees are identified by an alphanumeric string, e.g. "134SNW".
I've tried creating the table in a migration like this:
create_table :employees, {:primary_key => :emp_id} do |t|
    t.string :emp_id
    t.string :first_name
    t.string :last_name
end
What this gives me is what seems like it completely ignored the line t.string :emp_id and went ahead and made it an integer column. Is there some other way to have rails generate the PRIMARY_KEY constraint (I'm using PostgreSQL) for me, without having to write the SQL in an execute call?
NOTE: I know it's not best to use string columns as primary keys, so please no answers just saying to add an integer primary key. I may add one anyway, but this question is still valid.
© Stack Overflow or respective owner