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

发布于 2024-11-15 13:20:04 字数 551 浏览 2 评论 0原文

我安装了 Devise,进行了 rake,然后意识到我想添加 :confirmable。

我可以返回到相同的初始迁移并取消注释掉我想要的帮助程序,然后再次 rake 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 

I installed Devise, raked, and then realized afterwards, that I want to add :confirmable.

Can I go back to the same initial migration and just uncomment out the helper that I want and then rake db:migrate again?

I tried it and it didn't seem to work. But I haven't seen an example of how to create a follow-on migration.

Thanks!

This is what I tried:

  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 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

绝不服输 2024-11-22 13:20:04

您可以自己添加适当的列,如下所示:

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

You can add the proper columns yourself like so:

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
随风而去 2024-11-22 13:20:04

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

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

> rake db:drop

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

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

做出你的改变

> rake db:migrate

Your migration should work. Did you check your User model to make sure :confirmable is enabled? It's commented out by default.

If you don't mind losing your data you can just do

> rake db:drop

Otherwise you can just edit the initial migration and do a rollback.

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

Make your changes

> rake db:migrate
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文