Estoy bastante seguro de que el error no tiene nada que ver con el contenido real del TenantIdLoader
módulo. En cambio, tiene algo que ver con las ActiveSupport
dependencias.
Parece que no puedo superar este error. Por lo que he leído, es porque ActiveRecord::Base
se está volviendo a cargar o Company::TenantIdLoader
se está volviendo a cargar, y de alguna manera no se está comunicando eso. ¡Ayuda por favor! Realmente me gustaría poder actualizarme a Rails 4.2.
EDITAR
Ahora he aprendido que es porque estoy haciendo referencia a Tenant
que se recarga automáticamente. Sin embargo, necesito poder hacer referencia a la clase, entonces, ¿alguien sabe cómo solucionar esto?
config / application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
config / initializers / company.rb
ActionMailer::Base.send(:include, Company::TenantIdLoader)
lib / company / tenant_id_loader.rb
module Company
module TenantIdLoader
extend ActiveSupport::Concern
included do
cattr_accessor :tenant_dependency
self.tenant_dependency = {}
after_initialize do
self.tenant_id = Tenant.active.id if self.class.tenant_dependent? and self.new_record? and Tenant.active.present? and !Tenant.active.zero?
end
end
# class methods to be mixed in
module ClassMethods
# returns true if this model's table has a tenant_id
def tenant_dependent?
self.tenant_dependency[self.table_name] ||= self.column_names.include?('tenant_id')
end
end
end
end