Je suis presque sûr que l'erreur n'a rien à voir avec le contenu réel du TenantIdLoader
module. Au lieu de cela, cela a quelque chose à voir avec les ActiveSupport
dépendances.
Je n'arrive pas à surmonter cette erreur. D'après ce que j'ai lu, c'est parce que soit ActiveRecord::Base
en cours de rechargement, soit Company::TenantIdLoader
en cours de rechargement, et cela ne communique pas d'une manière ou d'une autre. Aidez-moi, s'il vous plaît! J'aimerais vraiment pouvoir être mis à niveau vers Rails 4.2.
ÉDITER
J'ai maintenant appris que c'est parce que je fais référence à Tenant
ce qui est rechargé automatiquement. J'ai besoin de pouvoir faire référence à la classe, alors est-ce que quelqu'un sait comment contourner cela?
config / application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
config / initialiseurs / company.rb
ActionMailer::Base.send(:include, Company::TenantIdLoader)
lib / entreprise / 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