2009-12-12 3 views
3

У меня есть много ситуаций, когда я хочу иметь первичный ключ без автоинкремента при использовании Rails.Как управлять первичным ключом без автоинкремента в Rails?

Пример: У меня есть один-к-одному отношения между А и В. В описывает некоторые специфические особенности добавлены к, таким образом, не может существовать без А. Таким образом, мы имеем:

А имеет один B
B относится к A

Естественное мышление будет иметь B.A_id как первичный ключ. Поэтому я попробовал create_table b, :id=>false в миграции и set_primary_key :a_id в модели B, но он не создает фактические первичные ключи в базе данных. И я хочу их (а также внешние ключи), поскольку база данных будет использоваться не только этим Rails-приложением.

Если я создаю первичные ключи с выполнением, они не приземляются в schema.rb, что болит. Теперь я думаю об обходном пути: я могу жить без ограничения PK, пока есть уникальное ограничение для этого столбца, поэтому я могу использовать add_index Rails в миграции, которая кажется более элегантной.

Любые предложения?

+1

Почему бы не использовать SQL на основе схемы? Уверен, что он не агностик базы данных, но агностицизм базы данных переоценен, особенно когда это мешает вам сделать что-то. –

ответ

Смежные вопросы