Just a quick little tip in case someone searches for it.
I have a table that was used for a has_and_belongs_to_many (habtm) relationship – which was great earlier on. As the application grew, needed to change to a has_many :through (hmt) relationship – using this table as a model etc. Now. initially, I used “:id => false” when creating the habtm join table (Mahmoud tells you why).
But one needs an primary key id on hmt join tables. So created a migration:
add_column :table_name, :id, :primary_key
remove_column :table_name, :id
And it added an id column to the table in the correct data type (integer) and gave id values to the existing records. sweet.
Also note that you don’t have to give the :id column a datatype, as to rails :primary_key is a datatype.