1

ActiveRecord を ORM (Rails なし) として使用する単純な ruby​​ プロジェクトがあります。すべてのテーブルに対していくつかの移行ファイルを作成しましたが、今は 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 リポジトリは役に立つかもしれません。

移行の命名スキームは、実際にはかなり重要です。どの移行が実行されたかは、*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 に答える