1

RailsアプリをHerokuに移動することを検討しています。

一般に、すべてのFKにONDELETE動作のFK制約を追加します。これまで、Rails Migrationsはそれを行う方法を提供していないため、制約を追加するために生のSQLを作成することでこれを行ってきました。

また、必要に応じてUNIQUEキーを追加します。

Herokuに移動した場合でも、この方法で制約を追加できますか?

この質問をする別の方法は、Herokuを使用してDBに直接アクセスできるのか、それとも移行で実行できることに制限されているのかということです。

4

1 に答える 1

2

connection.executeたとえば、次のコマンドを使用して、移行で必要なSQLを実行できます。

def up
    connection.execute(%q{
        alter table t add constraint c check (x in ('a', 'b', 'c'))
    })
end
def down
    connection.execute('alter table t drop constraint c')
end

外国人を使用して、移行に適切なFKサポートを追加したりschema.rb、生のSQLを介してFKを管理したくない場合も使用できます。

この:unique => trueオプションを使用しadd_indexて、一意の制約/インデックスを取得できます。

私はこれらすべてを実行し、関数(SQLとPl / pgSQLの両方)とトリガーをHerokuの専用PostgreSQLデータベースに追加しました。共有データベースでどれだけサポートされているかはわかりませんが、一意のインデックスは確かにサポートされ、FKとCHECKも利用できると確信しています。

于 2012-06-05T18:53:01.187 に答える