Rails没有在迁移中创建外键的方法(但是有插件可以做到这一点)。还有很多级联选项,所以您可以获得级联删除等功能。
考虑到所有这些内置选项,是否值得在数据库中创建外键?Rails开发人员通常会避免这样做吗?如果这是推荐的实践,你会认为Rails会原生支持它。
考虑到所有这些内置选项,是否值得在数据库中创建外键?Rails开发人员通常会避免这样做吗?如果这是推荐的实践,你会认为Rails会原生支持它。
在John Topley的回答上,我进行了一些研究,并找到了DHH对这个主题的一些看法,这使得阅读更有趣:
我没有找到DHH将数据库称为“巨大的哈希表”,因此也许John是引述了另一个引语。我很想阅读DHH意见的更加最新版本。
我没有找到太多其他人在过去几年中写下的意见。以下是我发现的:
# Assumes PostgreSQL
class LinkPostsToUsers < ActiveRecord::Migration
def self.up
execute "
ALTER TABLE posts
ADD CONSTRAINT fk_posts_user_id
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE"
end
def self.down
execute "ALTER TABLE posts DROP CONSTRAINT fk_posts_user_id"
end
end