Jestem prawie pewien, że błąd nie ma nic wspólnego z rzeczywistą zawartością TenantIdLoader
modułu. Zamiast tego ma coś wspólnego z ActiveSupport
zależnościami.
Wydaje się, że nie mogę obejść tego błędu. Z tego, co przeczytałem, wynika to z tego, że albo ActiveRecord::Base
jest ponownie ładowany, albo Company::TenantIdLoader
jest 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, Tenant
któ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