Что создает ограничение FOREIGN KEY в Ruby on Rails 3? - PullRequest
7 голосов
/ 10 декабря 2010

Я понимаю, что по умолчанию создается поле id, а также: PRIMARY KEY ( id ).

Как насчет внешнего ключа?

У меня есть таблицы Shops и Products и следующие ассоциации:

Shop:    has_many :products
Product: belongs_to :shop

В Product У меня также:

t.integer "shop_id"

, который должен быть внешним ключом, а также:

add_index("products", "shop_id")

Однако, если я экспортирую базу данных, я вижу только:

KEY `index_products_on_shop_id` (`shop_id`)

Что я должен сделать, чтобы добавить

FOREIGN KEY (`shop_id`) REFERENCES Shop(`id`)

1 Ответ

16 голосов
/ 10 декабря 2010

Вы можете использовать гем иностранец для добавления внешних ключей в ваше приложение. Для начала добавьте следующее к вашему Gemfile

gem "foreigner"

После этого вы можете легко добавить внешние ключи в свою миграцию следующим образом:

add_foreign_key :products, :shops

Это добавит иностранца от product.shop_id до shop.id. См. Документацию для получения дополнительных опций, таких как ключи с разными именами или таблицы с самоссылкой.

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