Jestem prawie pewien, że błąd nie ma nic wspólnego z rzeczywistą zawartością TenantIdLoadermodułu. Zamiast tego ma coś wspólnego z ActiveSupportzależnościami.
Wydaje się, że nie mogę obejść tego błędu. Z tego, co przeczytałem, wynika to z tego, że albo ActiveRecord::Basejest ponownie ładowany, albo Company::TenantIdLoaderjest ponownie ładowany, i jakoś tego nie przekazuje. Prosimy o pomoc! Naprawdę chciałbym mieć możliwość aktualizacji do Rails 4.2.
EDYTOWAĆ
Teraz dowiedziałem się, że dzieje się tak, ponieważ odwołuję się do tego, Tenantktóry jest automatycznie ładowany ponownie. Muszę jednak mieć możliwość odniesienia się do klasy, więc czy ktoś wie, jak to obejść?
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