有許多方法可以做到這一點,特別是你感興趣的關於查找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