ruby-on-railsrubydeviseapartment-gem

Apartment: uninitialized constant Tenant (NameError)


I am using the Apartment Gem for the first time for Multitenancy in a Ruby on Rails project. I am trying to create multiple tenants for users in your digital library Rails application.

I am using Devise Gem for the authentication of the application, and I have generated the and I have generated config file by running the code below in my terminal

rails generate devise:install

I have also generated a User model for Devise using the code below in my terminal

rails generate devise User

And for the Apartment Gem, I have installed it and generated the config file by running the code below in my terminal

bundle exec rails generate apartment:install

I have also configured the config/initializers/apartment.rb initializer file as needed using the documentation provided, but when I run the command below in my terminal

rails generate devise:views

to generate the views for Devise, I get the error below

uninitialized constant Tenant (NameError)

I have tried to figure out the cause of the issue, but I still haven't been fortunate to get it fixed. I need some help. Thank you in advance.


Solution

  • I later realized that the issue was from the configuration that I made initially to Apartment Gem's config/initializers/apartment.rb initializer file.

    After creating the User model, I also added it to the excluded models list in the config/initializers/apartment.rb initializer file.

    config.excluded_models = %w[Tenant User]
    

    I was supposed to instead replace Tenant in the excluded models list with the User model.

    config.excluded_models = %w[User]
    

    And that fixed the issue for me.

    N/B: If I named the model name of my subdomain for the multiple tenants as Tenant, then I the configuration can be left like this

    config.excluded_models = %w[Tenant]
    

    But for my case, I named the model name of my subdomain for the multiple tenants as User

    That's all.

    I hope this helps