sql >> Databasteknik >  >> RDS >> Mysql

Rails multitenant arkitektur, scoping åtkomst till flera hyresgäster

Trots att jag hittade många exempel på multitenancy i Rails-applikationer när jag först gav mig i kast med det, kunde jag inte hitta något som fick mig att känna mig helt bekväm heller. Men jag har äntligen en lösning som jag är nöjd med.

Jag började med 'multitenancy with scopes' railscast

http://railscasts.com/episodes/388-multitenancy-with-scopes

tittade sedan på att få flera hyresrätter att fungera med devise underdomäner med hjälp av den här guiden:

https ://github.com/plataformatec/devise/wiki/How-To:--Isolate-users-to-log-into-a-single-subdomain

Men jag tog det inte för nominellt värde; Jag dök in för att verkligen förstå hur utformning fungerade på det sättet.

När jag hade allt det på plats var jag redo för multitenant-pärlan:

https://github.com/wireframe/multitenant

Men jag stannade inte där. multitenant-pärlan kräver att du säger Multitenant.with_tenant när du vill att saker och ting ska vara lämpliga, så jag skapade en TenantController som ser ut så här:

  around_filter :scope_current_tenant

  def scope_current_tenant
    begin
      Firm.current = Firm.find_by_subdomain!(request.subdomain)
    rescue
      raise ActionController::RoutingError.new('Not Found')
    end

    Multitenant.with_tenant Firm.current do
      yield
    end

    ensure
      Firm.current = nil
    end
  end

och sedan alla kontroller jag vill ska omfattas av hyresgästen ärver från TenantController snarare än ApplicationController. På så sätt behövde jag inte komma ihåg något i kontrollernas detaljer, det "bara fungerade". det enda utvecklare behövde tänka på var "är det här en kontrollant som hanterar hyresgästdata?"

Även om detta fortfarande beror på att utvecklare gör några saker korrekt (ärver från rätt kontroller, säger "agerar_som_multitenant" i modellen, men det fungerar väldigt bra i praktiken.



  1. Välj data mellan två datum?

  2. MySQL välj var JSON-fältegenskapen har värde

  3. Vilka är fördelarna med ett datahanteringssystem?

  4. hur man exporterar data från loggtabellen till e-posttexten i Oracle