Refactor model extensions to use klass instead of constantize #267
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a small refactor to use a built-in Rails method instead of using
constantize
.The
acts_as_tenant
method usedconstantize
on the association name to infer class names. This is fine for most Rails apps, but breaks down in engines with isolated namespaces. Instead, thereflect_on_all_associations(:belongs_to)
method already returns an array ofAssociationReflection
, which has a methodklass
that returns the target association's class.There are two other instances of
constantize
in this gem:set_current_tenant_by_subdomain
set_current_tenant_by_subdomain_or_domain
The default tenant is
:account
, which is constantized asAccount
. I thought about usingconst_get
instead, but I think in this case it's better to explicitly use the namespaced version of the class you want to use as a tenant. For example:set_current_tenant_by_subdomain_or_domain "spina/account", :subdomain, :domain
Sidenote: I think @excid3's last commits fixed specs of this gem.