如何在初始create_table rake之后添加列来设计?

时间:2011-06-14 02:49:45

标签: ruby-on-rails-3 devise

我安装了Devise,raked,然后意识到我要添加:确认。

我可以回到相同的初始迁移,只是取消注释掉我想要的帮助,然后再挖掘db:migrate吗?

我尝试了它似乎没有用。但我还没有看到如何创建后续迁移的示例。

谢谢!

这就是我的尝试:

  1 class AddConfirmableToUsers < ActiveRecord::Migration 
  2   def self.up 
  3     change_table :users do |t| 
  4       t.confirmable 
  5     end 
  6     add_index :users, :confirmation_token,   :unique => true  
  7   end 
  8    
  9   def self.down 
 10     remove_column :users, :confirmation_token 
 11   end 
 12   
 13 end 

2 个答案:

答案 0 :(得分:4)

您可以自己添加正确的列:

class AddConfirmableToUsers < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.string :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
    end

    add_index :users, :confirmation_token, :unique => true
  end

  def self.down
    change_table :users do |t|
      t.remove :confirmation_token, :confirmed_at, :confirmation_sent_at
    end

    remove_index :users, :confirmation_token
  end
end

答案 1 :(得分:0)

您的迁移应该有效。您是否检查了User模型以确保:confirmable已启用?它默认被注释掉了。

如果你不介意丢失数据,你可以这样做

> rake db:drop

否则,您只需编辑初始迁移并进行回滚。

# get the current migration version
> rake db:version
> Current version: ****************41
> rake db:rollback ****************40

进行更改

> rake db:migrate