【问题标题】:what is version in rake db migraterake db 迁移中的版本是什么
【发布时间】:2014-04-13 14:17:08
【问题描述】:

我是fairly new to ruby and ROR。我有几个关于移民的问题。我看过指南,但它让我感到困惑。

http://guides.rubyonrails.org/migrations.html

class CreateUserModel < ActiveRecord::Migration
  def self_up 
    create_table :users do |t|
      t.column :username, :string
      t.column :email, :string
      t.column :password_hash, :string
      t.column :password_salt, :string
    end

  def self_down
    drop_table :users
  end
end
  1. 当我搜索谷歌时,我发现在这个命令上运行迁移rake db:migrate VERSION=20098252345。我对这个版本在做什么感到困惑 用命令。我刚刚创建了一个迁移 0001_create_user_model.rb
  2. 以上是我的migration 表。当我创建什么 运行/执行这个文件。它会为我创建表格和模型吗?

【问题讨论】:

  • @vee:Rails 4 和 Ruby 1.9.3
  • 请看:Running Migrations.
  • @Vee:你看到文件名和类名有什么问题吗[0001_create_user_model.rb]
  • 是的,我不知道为什么您的文件名以 0001 为前缀。有那么一刻,我以为你在 Rails 2 上,这就是我问这个问题的原因。您能分享一下您是如何创建此迁移的吗?
  • 我通常喜欢使用rails生成器来创建我的迁移和模型文件,即rails generate model User username:string email:string password_hash:string password_salt:string看看迁移文件,它带有一个数字前缀,rails用来跟踪哪个迁移已经运行

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

rake db:migrate VERSION=20098252345 中的20098252345 只是给位于db/migrate 目录中的迁移文件的前缀编号。它只是一个UTC timestamp(YYYYMMDDHHMMSS) 来区分一个文件。生成的迁移文件看起来像这样20098252345_create_user_model.rb

来自Guides

Rails 内部仅使用迁移的编号(时间戳)来识别它们。在 Rails 2.1 之前,迁移编号从 1 开始,每次生成迁移时都会递增。对于多个开发人员,这些很容易发生冲突,需要您回滚迁移并重新编号。在 Rails 2.1+ 中,通过使用迁移的创建时间来识别它们,在很大程度上避免了这种情况。您可以通过将以下行添加到 config/application.rb 来恢复到旧的编号方案。

config.active_record.timestamped_migrations = false

希望对你有帮助!

【讨论】:

    【解决方案2】:

    rake 命令的版本实际上是年、月等的时间戳... 这是为了指定您想要迁移到多远。

    您在任何典型应用中都有许多迁移文件。由于所有这些迁移都会更改您的数据库架构(即哪些表、表名、表的属性列等)

    Rails 通过从迁移中逐步构建它们来处理定义架构(即创建表并指定表具有哪些属性和列)。

    这使得通过回滚和向前迁移来编辑架构变得很方便......就像任何版本控制系统所做的那样。

    现在,您可以指定一个版本来指定要实际“迁移”到哪个迁移并将架构定义为...或者您可以运行rake db:migrate 将所有迁移文件运行到最后一。我通常不会具体指定版本,因为我通常会将所有迁移运行到最新版本。这只是一种选择。如果您需要回滚某些迁移并更改某些内容,可以使用 rake db:rollback 之类的命令,其中包含指定步骤数等的各种选项,您也可以 google。

    这通常有效。如果您在模型中对数据库表中的数据记录(即行)进行了验证,则可能会遇到迁移问题,您可以在http://guides.rubyonrails.org/migrations.html 的第 6 节中了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-01
      • 2012-11-17
      • 1970-01-01
      • 2011-04-21
      • 2012-09-08
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多