【问题标题】:How to split an app's data per domain instead of per app instance?如何按域而不是每个应用程序实例拆分应用程序的数据?
【发布时间】:2013-04-13 22:28:21
【问题描述】:
假设您构建了一个简单的博客系统。
不必在 3 个不同的 Heroku dynos 上发布这个博客系统,这对于如此简单的事情来说会很昂贵(每个至少需要 2 个 dynos,这样它就不会闲置)......有可能拆分逻辑的选项一个应用程序上有 3 个不同的域。
您将如何为应用的一个实例获取当前存在的逻辑和数据,然后将其拆分,以便 3 个不同的域可以使用该域范围内的数据?这是利用现有数据来形成这个系统。
对不起,如果这不够清楚。
【问题讨论】:
标签:
ruby-on-rails
mongodb
heroku
【解决方案1】:
将所有三个域指向同一个应用程序。
您需要创建一个域模型来处理这个问题。
class Domain < ActiveRecord::Base
has_many :blogs
belongs_to :admin
validates_uniqueness_of :domain_string
end
class ApplicationController < ActionController::Base
before_filter :get_domain
def get_domain
@domain = Domain.find_by_domain_string(request.host)
end
end
class BlogController < ApplicationController
def index
@blogs = @domain.blogs.whatever_additional_logic_you_need
end
end
其他一切都会遵循相同的模式。