【发布时间】:2011-02-16 11:41:14
【问题描述】:
我已经想通了
我正在学习如何在 Rails 中创建一个多租户应用程序,该应用程序根据用于查看应用程序的域或子域来提供来自不同模式的数据。
我已经回答了一些问题:
- 如何让 subdomain-fu 也与域一起使用? Here's someone that asked the same question 将您带到this blog。
- 什么数据库,它的结构如何?这是一个很好的talk by Guy Naor,还有一个很好的question about PostgreSQL and schemas。
- 我已经知道我的模式都将具有相同的结构。他们持有的数据会有所不同。那么,如何为所有架构运行迁移?这是an answer。
这三点涵盖了我需要了解的很多一般知识。但是,在接下来的步骤中,我似乎有很多实现方式。我希望有更好、更简单的方法。
最后,我的问题
当新用户注册时,我可以轻松创建架构。但是,什么是加载其他架构已经拥有的结构的最佳和最简单的方法?这里有一些问题/场景可能会给你一个更好的主意。
- 我是否应该将它传递给一个 shell 脚本,该脚本将公共模式转储到一个临时模式中,然后将其导入到我的主数据库中(就像 Guy Naor 在他的视频中所说的那样)?这是quick summary/script I got from the helpful #postgres on freenode。虽然这可能会奏效,但我将不得不在 Rails 之外做很多事情,这让我有点不舒服..这也让我想到了下一个问题。
- 有没有办法直接从 Ruby on Rails 中做到这一点?就像创建一个 PostgreSQL 架构,然后只需将 Rails 数据库架构(schema.rb - 我知道,这很混乱)加载到该 PostgreSQL 架构中。
- 是否有一个 gem/plugin 已经拥有这些东西? 像“create_pg_schema_and_load_rails_schema(the_new_schema_name)”这样的方法。如果没有,我可能会努力制作一个,但我怀疑它对所有移动部件的测试效果如何(特别是如果我最终使用 shell 脚本来创建和管理新的 PostgreSQL 模式)。
谢谢,我希望不会太长!
【问题讨论】:
标签: ruby-on-rails postgresql schema multi-tenant