Поддержка ограничения внешнего ключа в Rails - PullRequest
9 голосов
/ 26 ноября 2008

Как в Ruby on Rails добавить ограничение внешнего ключа при миграции?

Ответы [ 4 ]

14 голосов
/ 22 ноября 2009

Вот решение на основе гемов, которое включает поддержку добавления и удаления ограничений внешнего ключа, не вызывает сбоев в sqlite и правильно работает с файлами schema.rb:

http://github.com/matthuhiggins/foreigner

4 голосов
/ 10 апреля 2010

Это обновление для самоцвета matthuhiggins-иностранца: http://github.com/sparkfly/foreigner

Особенности:

  • покрытие rspec, протестировано на PostgreSQL 8.3.9 и MySQL 5.0.90
  • Поддержка миграции
  • schema.rb support

Будущие версии будут включать ограничения CHECK для PostgreSQL, который необходим для реализации многотабличного наследования.

2 голосов
/ 26 ноября 2008

AFAIK, встроенной поддержки для этого нет, но есть несколько плагинов , которые помогут вам в этом. Вы также можете добавить их вручную в файлы миграции, просто используйте для этого метод 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
0 голосов
/ 16 августа 2011

Было бы достаточно добавить следующее, например, с моделями Products и User?

add_index :products, :user_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...