나는 오류가 TenantIdLoader
모듈 의 실제 내용과 관련이 없다고 확신합니다 . 대신 ActiveSupport
종속성과 관련이 있습니다.
이 오류를 지나칠 수없는 것 같습니다. 내가 읽은 바에 따르면, 그것은 ActiveRecord::Base
재 장전되거나 재 장전 되기 때문 Company::TenantIdLoader
입니다. 그리고 그것은 어떻게 든 그것을 전달하지 않습니다. 도와주세요! Rails 4.2로 업그레이드하고 싶습니다.
편집하다
Tenant
자동으로 다시로드되는 것을 참조하기 때문이라는 것을 이제 알게되었습니다 . 하지만 실제로 클래스를 참조 할 수 있어야하는데이 문제를 해결하는 방법을 아는 사람이 있습니까?
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