rails migration删除密钥并将数据添加到自动增量列id中

时间:2013-04-26 12:04:50

标签: mysql ruby-on-rails rails-migrations

我的PHP应用程序具有以下表结构

CREATE TABLE IF NOT EXISTS `artist_has_fans` (
`artist_id` int(11) NOT NULL,
`fan_id` int(11) NOT NULL,
 PRIMARY KEY (`artist_id`,`fan_id`),
 KEY `fk_artist_has_artist_artist2` (`fan_id`),
 KEY `fk_artist_has_artist_artist1` (`artist_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我需要在rails中编写迁移,以便表具有自动增量的主键ID。 其次,因为表已经有一些数据我需要为id列插入数据。 然后我需要从现有列中删除主键。

感谢任何有关编写迁移的帮助。

1 个答案:

答案 0 :(得分:2)

在查看上面的内容时,它看起来就像一个连接表。您是否计划为其添加其他属性,或者您只是想让它与Rails一起使用?你可以在rails中使用has_and_belongs_to_many关系,你不需要ID字段。

下面的内容应该无需修改表格。

class Artist < ActiveRecord::Base
   ...
   has_and_belongs_to_many :fans, :join_table => 'artist_has_fans'

end 

但是如果你想改变表来在mysql中添加主键

   def_up
      execute <<-SQL
       ALTER TABLE artist_has_fans ADD id INT PRIMARY KEY AUTO_INCREMENT;
      SQL
   end 

那应该创建id并为所有现有行添加值