2012-06-05 2 views
0

Я рассматриваю возможность переноса приложения Rails на Heroku.Поддерживает ли Heroku внешний ключ и уникальные ограничения?

В целом я добавляю ограничения FK с поведением ON DELETE ко всем FK. До сих пор я сделал это, написав необработанный SQL, чтобы добавить ограничения, поскольку Rails Migrations не предоставляют способ сделать это.

Я также добавляю ключи UNIQUE, если необходимо.

Смогу ли я добавить ограничения таким образом, если я перееду на Хероку?

Другой способ поставить этот вопрос: получить прямой доступ к моей БД с помощью Heroku, или я ограничусь тем, что могу сделать при миграции?

ответ

1

Вы можете выполнить любой SQL вы хотите в миграции с использованием connection.execute, например:

def up 
    connection.execute(%q{ 
     alter table t add constraint c check (x in ('a', 'b', 'c')) 
    }) 
end 
def down 
    connection.execute('alter table t drop constraint c') 
end 

Вы также можете использовать foreigner добавить надлежащую поддержку FK для переноса данных и schema.rb, если вы не хотите, чтобы управлять ваши FKs через сырой SQL.

Вы можете использовать опцию :unique => true для add_index, чтобы получить уникальные ограничения/индексы.

Я сделал все это и даже добавил функции (как SQL, так и Pl/pgSQL) и триггеры в выделенную базу данных PostgreSQL в Heroku. Я не уверен, как много поддерживается в общих базах данных, но, безусловно, будут уникальные индексы, и я уверен, что FK и CHECK будут доступны.

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