2012-03-10 33 views
19

Hola Tengo una tabla en mi aplicación de rieles que no tiene ninguna columna de identificación o clave principal. Eso es porque esta tabla fue traída a mi aplicación de rieles desde una aplicación anterior y la tabla está llena de datos. Ahora me doy cuenta de que sin una clave primaria entera, los rieles no pueden mostrar editar y mostrar vistas en el navegador. Así que tuve que agregar una columna de id a mi base de datos que es una clave principal y que se autoincrementa.cómo agregar una clave principal a una tabla en rieles

Basado en mi Google, encontré algunas publicaciones sobre la creación de claves principales para una tabla, pero nada que se haya completado.

Así que me pregunto si alguien puede darme una mano aquí. Hasta ahora, lo que sé es que para cambiar la tabla uno debe escribir una migración y luego ejecutarla. El comando que se debe ejecutar para añadir una columna id es la siguiente:

rails generate migration add_id_to_businesses id:primary_key 

Sin embargo, después de ejecutar este comando no se añade ninguna nueva columna a mi base de datos. No estoy seguro de cómo proceder .. ¿Cómo agrego una nueva columna a mi base de datos?

realmente apreciaría una mano ..... Gracias ,

+0

Es casi seguro que desea 'id: int' en lugar de la clave principal. ¿Cómo se ve tu archivo de migración? –

Respuesta

29
rails g migration add_id_to_products id:primary_key 

     invoke active_record 
     create db/migrate/20120310085527_add_id_to_products.rb 

archivo de migración debe ser similar -

# db/migrate/20120310085527_add_id_to_products.rb 
    class AddIdToProducts < ActiveRecord::Migration 
    def change 
     add_column :products, :id, :primary_key 
    end 
    end 
+1

run rake db: migrate :) –

+3

Esto solo funciona para las claves primarias enteras. –

+1

@AttilaO. ¡derecho! en caso de que desee alguna otra clave principal, primero debe agregar esa columna y luego debe ejecutar la consulta de ejecución para actualizar esa columna como clave principal. –

Cuestiones relacionadas