22

Hi I have a table in my rails app that doesnt have any id column or primary key. thats because this table was brought into my rails app from a previous app and the table is prepopulated with data. I now realize that without a integer primary key, rails cannot display edit and show views in the browser. So i ned to add a id column to my database that is a primary key and that autoincrements.

Based on my googling, I came across a few posts about creating primary keys for a table but nothing that was complete.

So Im wondering if someone can give me a hand here. So far what I know is in order to change the table one must write a migration and then run it. The command that needs to be run for adding a id column is as follows:

rails generate migration add_id_to_businesses id:primary_key

However after running this command no new column is added to my database. Im not sure how to proceed.. How do I add a new column to my database?

Would really appreciate a hand..... Thanks,

banditKing
  • 9,405
  • 28
  • 100
  • 157

1 Answers1

32
rails g migration add_id_to_products id:primary_key

      invoke  active_record
      create    db/migrate/20120310085527_add_id_to_products.rb

Migration file should look like -

   # db/migrate/20120310085527_add_id_to_products.rb
   class AddIdToProducts < ActiveRecord::Migration
     def change
        add_column :products, :id, :primary_key
     end
   end
Sandip Ransing
  • 7,583
  • 4
  • 37
  • 48
  • 1
    the run rake db:migrate :) – zero_cool Oct 06 '14 at 19:24
  • 1
    @AttilaO. right! in-case you want some other primary key, you have to add that column first and then you have to fire execute query to update that column as primary key. – Sandip Ransing Feb 04 '15 at 07:37
  • 5
    It is also nice to add `first: true` to the end of the `add_column` line so that the column is added as the first field in the table. – andrhamm Mar 16 '15 at 14:38