Estou usando migrações do Rails para gerenciar um esquema de banco de dados e estou criando uma tabela simples onde gostaria de usar um valor não inteiro como a chave primária (em particular, uma string). Para abstrair do meu problema, digamos que haja uma tabela employees
onde os funcionários são identificados por uma string alfanumérica, por exemplo "134SNW"
.
Tentei criar a tabela em uma migração como esta:
create_table :employees, {:primary_key => :emp_id} do |t|
t.string :emp_id
t.string :first_name
t.string :last_name
end
O que isso me dá é o que parece ignorar completamente a linha t.string :emp_id
e ir em frente e torná-la uma coluna inteira. Existe alguma outra maneira de fazer rails gerar a restrição PRIMARY_KEY (estou usando PostgreSQL) para mim, sem ter que escrever o SQL em uma execute
chamada?
NOTA : Eu sei que não é melhor usar colunas de string como chaves primárias, portanto, não responda apenas dizendo para adicionar uma chave primária inteira. Posso adicionar um de qualquer maneira, mas esta questão ainda é válida.