Ich bin mir ziemlich sicher, dass der Fehler nichts mit dem tatsächlichen Inhalt des TenantIdLoader
Moduls zu tun hat . Stattdessen hat es etwas mit ActiveSupport
Abhängigkeiten zu tun .
Ich kann diesen Fehler scheinbar nicht überwinden. Nach dem, was ich gelesen habe, liegt es daran, dass entweder ActiveRecord::Base
neu geladen wird oder Company::TenantIdLoader
neu geladen wird, und dass dies irgendwie nicht kommuniziert wird. Hilfe bitte! Ich würde wirklich gerne ein Upgrade auf Rails 4.2 erhalten.
BEARBEITEN
Ich habe jetzt gelernt, dass es daran liegt, dass ich referenziere, Tenant
was automatisch neu geladen wird. Ich muss in der Lage sein, tatsächlich auf die Klasse zu verweisen. Weiß jemand, wie man das umgeht?
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