【问题标题】:How can I add new attributes into my migrate?如何将新属性添加到我的迁移中?
【发布时间】:2014-09-15 07:45:48
【问题描述】:

我目前有 migrate 之类的东西:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.string :encrypted_password
      t.string :salt

      t.timestamps
    end
  end
end

现在,如果我想在这个文件中添加两个新属性,一个是:t.string :type,另一个是:t.string :memory_token,请问我该怎么做?

【问题讨论】:

    标签: ruby-on-rails migrate dbmigrate


    【解决方案1】:

    如果您已经运行迁移,则必须创建一个新的。

    rails g migration AddTypeToUsers

    然后你可以在迁移文件中编辑

    change_table :users do |t|
      t.string :type
      t.string :memory_token
    end
    

    然后运行迁移rake db:migrate 进行更改

    如果你还没有运行迁移,那么你可以简单地添加

      t.string :type
      t.string :memory_token
    

    到您向我们展示的那个文件,然后运行您的迁移

    【讨论】:

    • 我不确定我是否理解。我向您展示的命令将生成一个全新的 迁移文件,如果您已经在此迁移文件上运行rake db:migrate,这是您的最佳选择。如果你还没有运行rake db:migrate,你可以简单地编辑当前的迁移文件,不会有任何伤害。
    • 让我们简化一下。你运行迁移了吗?你可以通过rake db:migrate:status查看
    • 我在发布这个问题之前已经运行了 rake db:migrate,我可以简单地 vim 迁移文件以将这些新属性添加到其中吗?
    • 否,因为您已经运行了迁移。 Rails 会记住它已经运行过的迁移文件,并且不会再次运行它们。您需要开始新的迁移。您可以按照我的说明或@IIya 的说明进行操作,两者都会为您提供所需的结果(将 type 和 memory_token 字符串添加到 users 表)
    【解决方案2】:

    +1 到@JTG

    你也可以只用一行:

    rails g migration AddTypeAndMemoryTokenToUsers type:string memory_token:string

    你会得到以下文件:

    class AddTypeAndMemoryTokenToUsers < ActiveRecord::Migration
      def change
        add_column :users, :type, :string
        add_column :users, :memory_token, :string
      end
    end
    

    这将在运行rake db:migrate后进行更改

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2016-03-20
      • 2018-08-09
      • 2014-01-08
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多