У меня есть много ситуаций, когда я хочу иметь первичный ключ без автоинкремента при использовании 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 в миграции, которая кажется более элегантной.
Любые предложения?
Почему бы не использовать SQL на основе схемы? Уверен, что он не агностик базы данных, но агностицизм базы данных переоценен, особенно когда это мешает вам сделать что-то. –