1

我有一个简单的 ruby​​ 项目,它使用 ActiveRecord 作为 ORM(没有 Rails)。我为我的所有表创建了一些迁移文件,现在我正在寻找如何在 Rails 中使用它们。这是一个例子:

class CreateCategoriesTable < ActiveRecord::Migration
  def up
    create_table :categories do |t|
      t.integer :id, null: false
      t.string :name, null: false
    end
  end

  def down
    drop_table :categories
  end
end

在我的主文件中,我使用以下命令运行迁移:

CreateCategoriesTable.new.migrate :up

但是,如果我有 db(它是文件中的 sqlite db),则此迁移会导致异常(表已存在)。那么,我怎样才能运行我所有的迁移(或者如何生成一个模式文件,然后如何运行它?)只有在需要它们时,例如第一次,然后只有当某些事情发生变化时?

4

1 回答 1

1

这个 github repo可能对你有用。

迁移的命名方案实际上相当重要。哪些迁移已运行在名为 *schema_migrations* 的表中进行跟踪。这是 postgres 的一个例子:

 Table "public.schema_migrations"
 Column  |          Type          | Modifiers 
---------+------------------------+-----------
 version | character varying(255) | not null
 Indexes:
 "unique_schema_migrations" UNIQUE, btree (version)

development=# select * from schema_migrations;
    version     
----------------
20130206231627
(1 row)

此外 schema.rb 可以跟踪它的当前版本

ActiveRecord::Schema.define(:version => 20130206231627) do
  ...
end
于 2013-02-08T22:46:18.007 回答