Я уверен, что ошибка не имеет ничего общего с фактическим содержимым модуля TenantIdLoader
. Вместо этого он имеет какое-то отношение к зависимостям ActiveSupport
.
Кажется, я не могу пройти мимо этой ошибки. Из того, что я прочитал, это потому, что либо ActiveRecord::Base
перезагружается, либо Company::TenantIdLoader
получает перезагрузку, и это как-то не сообщает об этом. Помогите, пожалуйста! Мне очень хотелось бы получить обновление до Rails 4.2.
РЕДАКТИРОВАТЬ
Теперь я узнал об этом, потому что я Tenant
который автоматически перезагружается. Мне нужно иметь возможность действительно ссылаться на класс, но так ли кто-нибудь знает, как обойти это?
конфиг /application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
конфиг/Инициализаторы/company.rb
ActionMailer::Base.send(:include, Company::TenantIdLoader)
Библиотека/компания /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 table has a tenant_id
def tenant_dependent?
self.tenant_dependency[self.table_name] ||= self.column_names.include?('tenant_id')
end
end
end
end