Отказ от ответственности
Убедитесь, что вы действительно можете продать приложение, которое пишете, другим клиентам.Вы подписали контракт с вашим клиентом?Если это так, вполне вероятно, что они владеют правами на код, который вы пишете, и в этом случае вы будете нарушать ваш контракт.
В Википедии есть действительно хорошая статья о Мультитенантности, которую вы обязательно должны прочитать.Он ответит на многие ваши вопросы и заставит задуматься о своей стратегии.Мое предложение состоит в том, чтобы создать ваше приложение таким образом, чтобы вы могли поддерживать многопользовательский режим, так как после него гораздо сложнее его запутать.
Приложения 37s не допускают никакой настройки, кроме цветовой схемы, котораявероятно, сделано с помощью настройки, которая изменяет таблицу стилей.Например:
<%= stylesheet_link_tag(@tenant.style.name) %>
Вы должны загрузить арендатора на основе субдомена:
before_filter :load_tenant, :if => :tenant_request?
def tenant_request?
request.subdomain.present? && !request.subdomain == 'www'
end
def load_tenant
@tenant = Tenant.find_by_name(request.subdomain)
end
Если вы хотите иметь функциональность, вы можете включать и выключать самый простой способ:вероятно, стоит добавить битовую маску (есть гем для битовых масок ), который позволит вам запрашивать доступные повторы.Это не будет масштабироваться мимо определенного количества функций, но будет хорошим началом.В конечном итоге вы получите код вида:
<% if tenant.has_feature?(:messaging) %>
<li><%= link_to 'Messages', messages_url %></li>
<% end %>
Убедитесь, что при любом выборе вы делаете простейшую вещь, которая работает.