9

Ruby on Rails では、移行時に外部キー制約を追加する方法は?

4

4 に答える 4

14

これは、外部キー制約の追加と削除のサポートを含み、sqliteで失敗せず、schema.rbファイルで正しく機能するgemベースのソリューションです。

http://github.com/matthuhiggins/foreigner

于 2009-11-22T08:25:21.273 に答える
4

これは matthhiggins-foreigner gem の更新です: http://github.com/sparkfly/foreigner

特徴:

  • PostgreSQL 8.3.9 および MySQL 5.0.90 に対してテストされた rspec カバレッジ
  • 移行サポート
  • schema.rb のサポート

将来のバージョンには、複数テーブルの継承を実装するために必要な PostgreSQL の CHECK 制約が含まれます。

于 2010-04-09T21:24:34.010 に答える
2

私の知る限り、それに対する組み込みのサポートはありませんが、それを支援するプラグインがいくつかあります。それらを移行ファイルに手動で追加することもできます。そのために execute メソッドを使用するだけです。たとえば (Rails API のサンプル):

  class MakeJoinUnique < ActiveRecord::Migration
    def self.up
      execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)"
    end

    def self.down
      execute "ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`"
    end
  end
于 2008-11-26T11:53:23.840 に答える
0

ProductsUserモデルなど、次を追加するだけで十分でしょうか?

add_index :products, :user_id

于 2011-08-16T08:05:24.610 に答える