1

我正在考虑将 Rails 应用程序移至 Heroku。

通常,我将具有 ON DELETE 行为的 FK 约束添加到所有 FK。到目前为止,我已经通过编写原始 SQL 来添加约束来做到这一点,因为 Rails 迁移没有提供这样做的方法。

我还在需要的地方添加了 UNIQUE 键。

如果我搬到 Heroku,我还能以这种方式添加约束吗?

提出这个问题的另一种方法是,我是否可以使用 Heroku 直接访问我的数据库,或者我是否仅限于在迁移中可以做的事情?

4

1 回答 1

2

您可以使用 执行迁移中所需的任何 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

如果您不想通过原始 SQL 管理您的 FK,您还可以使用foreigner为您的迁移添加适当的 FK 支持。schema.rb

您可以使用该:unique => true选项来add_index获取唯一的约束/索引。

我已经完成了所有这些工作,甚至在 Heroku 的专用 PostgreSQL 数据库中添加了函数(SQL 和 Pl/pgSQL)和触发器。我不确定共享数据库支持多少,但唯一索引肯定会支持,而且我很确定 FK 和 CHECK 也将可用。

于 2012-06-05T18:53:01.187 回答