我正在寻找有关如何在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中创建一个&#39; site&#39;您可以在所有控制器中重复使用的方法。
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
答案 0 :(得分:1)
您可能需要为此检查CouchRest模型的代理功能。更多细节可以在这里找到:
http://www.couchrest.info/model/proxying.html
虽然我没有个人经验,但我知道CouchDB处理的是> 10k数据库。以下是扩展用户数量的一个很好的方法:
http://comments.gmane.org/gmane.comp.db.couchdb.user/13862
在处理大量数据库时需要考虑的一些注意事项:
希望有所帮助。