Я впевнений, що помилка не має нічого спільного з фактичним вмістом TenantIdLoader
модуля. Натомість це має щось спільне із ActiveSupport
залежностями.
Я, здається, не можу пройти цю помилку З того, що я прочитав, це тому, що або ActiveRecord::Base
він перезавантажується, або Company::TenantIdLoader
перезавантажується, і це якось не повідомляє про це. Допоможіть, будь ласка! Я дуже хотів би мати можливість перейти на Rails 4.2.
EDIT
Зараз я дізнався, що це тому, що я Tenant
посилаюсь, що автоматично завантажується. Мені потрібно вміти фактично посилатися на клас, тож хтось знає, як це обійти?
config / application.rb
config.autoload_paths += %W( #{config.root}/lib/company )
config / ініціалізатори / 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