这是我第一次使用Ruby on Rails创建应用程序。
我想根据加载的站点切换数据库。使用php我曾经在http主机上做一个简单的strpos,并根据它设置数据库名称。我怎么能用rails做到这一点?
答案 0 :(得分:2)
当Rails应用程序在生产模式下启动时,它会预加载其类并检索例如来自已配置数据库的列数据。要使用多个数据库,您必须阻止它执行此操作 - 这可能会导致比解决的问题更多的问题。
更容易管理的解决方案就是拥有两个应用程序副本,一个用于监听每个域。
Rails应用程序通常设计为由单个数据库支持运行,如果您的数据仅针对单个域,那么您的数据可能全部位于同一个数据库中,但是相关模型链接到特定数据库“SiteDomain”模型,然后您可以进行内容管理。
答案 1 :(得分:0)
您可以使用不同的环境(例如domain1_production,domain2_production等)运行您的应用程序,这样您就可以在database.yml数据库环境中为您的所有域定义。但每个环境都必须在内存中运行自己的过程。
另一个解决方案是在每个模型中设置before_filter并解析您需要的域设置数据库连接。但这是非常奇怪的黑客