Sono abbastanza sicuro che l'errore non ha nulla a che fare con il contenuto effettivo del modulo TenantIdLoader. Invece ha qualcosa a che fare con le dipendenze di ActiveSupport.Una copia di xxx è stata rimossa dall'albero dei moduli ma è ancora attiva
Non riesco a superare questo errore. Da quello che ho letto, è perché ActiveRecord :: Base si sta ricaricando o Company :: TenantIdLoader si sta ricaricando, e in qualche modo non lo comunica. Aiuto per favore! Mi piacerebbe davvero essere in grado di passare a Rails 4.2.
EDIT
Ora ho imparato che è perché sto riferimento inquilino che sta ottenendo ricaricato automaticamente. Devo essere in grado di fare effettivamente riferimento alla classe, quindi qualcuno sa come aggirare questo?
config/application.rb
config.autoload_paths += %W(#{config.root}/lib/company)
config/inizializzatori/company.rb
ActionMailer::Base.send(:include, Company::TenantIdLoader)
lib/società/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
Questa risposta è utile? http://stackoverflow.com/questions/17561697/argumenterror-a-copy-of-applicationcontroller-has-been-removed-from-the-module/23008837#23008837 –
Sei sicuro che la classe Tenant sia coinvolta? Se si eliminano i bit di quel codice che utilizzano Tenant, si ottiene comunque un errore? –
@WaynnLue sì, penso che sia la ragione, non so come risolverlo. – kddeisz