Tenho certeza de que o erro não tem nada a ver com o conteúdo real do TenantIdLoader
módulo. Em vez disso, tem algo a ver com ActiveSupport
dependências.
Não consigo superar esse erro. Pelo que li, é porque ActiveRecord::Base
está sendo recarregado ou Company::TenantIdLoader
recarregado, e de alguma forma não está comunicando isso. Ajuda por favor! Eu realmente gostaria de poder ser atualizado para o Rails 4.2.
EDITAR
Agora eu aprendi que é porque estou Tenant
fazendo referência a qual está sendo recarregada automaticamente. Eu preciso ser capaz de realmente fazer referência à classe, então alguém sabe como contornar isso?
config / application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
config / inicializadores / empresa.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