我正在寻找关于如何在rails应用程序中使用couchrest模型实现多租户的建议。对于我的多租户应用程序,我正在考虑两个选项:
{编辑-删除我的丑陋选项,因为它们只会混淆未来的读者}
我希望这与10K用户很好地工作。
解决方案:基于Sam的建议,以下是我所做的工作,并且运行良好--在我的示例中,我需要重写proxy_database方法,因为代理数据库的标准命名与我的命名不匹配。
创建主程序
class Site < CouchRest::Model::Base
property :name
property :slug
proxy_for :users
proxy_for ...(all the other multi-tenant models)
# Databases are on same server in this example
def proxy_database
@db ||= self.server.database!(slug)
end
end然后在每个多租户模型中
class User < CouchRest::Model::Base
...
proxied_by :site在ApplicationHelper中,创建一个可以在所有控制器中重用的'site‘方法。
module ApplicationHelper
def site
db_name = current_user.db_name
@site ||= Site.create(slug: "#{db_name}_#{Rails.env}" )
end然后控制器可能会执行如下操作:
def show
user = site.users.find(params[:id])
render :json => user
end发布于 2014-09-02 14:21:34
为此,您可能需要检查CouchRest模型的代理特性。更多细节可以在这里找到:
http://www.couchrest.info/model/proxying.html
虽然我没有个人经验,但我知道CouchDB处理>10k数据库。下面是一条很好的扩展用户数量的方法:
http://comments.gmane.org/gmane.comp.db.couchdb.user/13862
在处理大量数据库时需要考虑的几个问题:
希望这能有所帮助。
https://stackoverflow.com/questions/25369695
复制相似问题