Rails 3中的多租户应用程序,具有DB分离功能

时间:2011-06-18 10:26:07

标签: ruby-on-rails ruby-on-rails-3 multi-tenant

如何在Rails 3中正确更改多租户应用的数据库配置?

此时,我正在过滤器之前在ApplicationController中切换数据库配置,如下面的代码

class ApplicationController < ActionController::Base
  before_filter :set_database

  def set_database
    db_name = get_db_name

    spec = ActiveRecord::Base.configurations[Rails.env]
    new_spec = spec.clone
    new_spec["database"] = db_name
    ActiveRecord::Base.establish_connection(new_spec)
  end
end

这是一个好方法吗?我对用户会话有疑虑。如何正确更改会话存储设置,例如:key?这里的另一个问题是,如果用户会话存储在DB中,因为似乎用户会话在ApplicationController代码之前加载到机架中间件中。

1 个答案:

答案 0 :(得分:0)

要在数据库之间切换,这个solution看起来更干净。将conn方法的逻辑更新为get_db_name方法。希望这会有所帮助。