有许多方法可以做到这一点,特别是你感兴趣的关于查找multi-tenancy
到轨
-
多租户
虽然多租户通常是具有多个数据库/资产(每个用户一个)的定义,但是,因为它很难得到这个工作克护栏(这是我们目前正在处理),则可以使用原理与数据
的一个堆叠
有关于如何使用Rails这里实现这个几个教程:
虽然这不是直接关系到你的问题,大部分的 通常基于“多租户”问题,“我怎么了我的用户创建不同的子域”
-
子域
Rails子域的基础是捕获请求并将其路由到正确的控制器。我们已经成功地实现,使用以下设置:
#config/routes.rb
constraints Subdomain do #-> lib/subdomain.rb & http://railscasts.com/episodes/221-subdomains-in-rails-3
#Account
namespace :accounts, path: "" do #=> http://[account].domain.com/....
#Index
root to: "application#show"
end
end
#lib/subdomain.rb
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != 'www'
end
end
这会给你做以下的能力:
#app/controllers/accounts/application_controller.rb
class Account::ApplicationController < ActionController::Base
before_action :set_account
def show
#@account set before_action. If not found, raises "not found" exception ;)
end
private
#Params from Subdomain
def set_account
params[:id] ||= request.subdomains.first unless request.subdomains.blank?
@account = Account.find params[:id]
end
end
理想情况下,我们很乐意在中间件来处理这个问题,但就目前而言,这就是我们所拥有的!
这会给你打电话给你从@account
变量需要数据的能力:
#app/views/accounts/application/show.html.erb
<%= @account.name %>
谢谢。+1,但我仍然不明白如何根据用户的个人资料将用户重定向到特定的域。所以,如果他是一名学生,我想重定向到student.myapp.com。 – user3304086 2014-09-10 22:32:55