Saya cukup yakin kesalahan tidak ada hubungannya dengan konten TenantIdLoader
modul yang sebenarnya. Sebaliknya, ini ada hubungannya dengan ActiveSupport
Dependensi.
Sepertinya saya tidak bisa melewati kesalahan ini. Dari apa yang saya baca, itu karena ActiveRecord::Base
sedang dimuat ulang atau Company::TenantIdLoader
dimuat ulang, dan entah bagaimana tidak mengkomunikasikannya. Tolonglah! Saya sangat ingin bisa ditingkatkan ke Rails 4.2.
EDIT
Saya sekarang telah belajar bahwa itu karena saya mereferensikan Tenant
yang dimuat ulang secara otomatis. Saya harus benar-benar bisa mereferensikan kelas, jadi apakah ada yang tahu bagaimana menyiasatinya?
config / application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
config / penginisialisasi / perusahaan.rb
ActionMailer::Base.send(:include, Company::TenantIdLoader)
lib / perusahaan / 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