ฉันค่อนข้างมั่นใจว่าข้อผิดพลาดไม่เกี่ยวข้องกับเนื้อหาจริงของ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 / บริษัท / 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