如何在我的应用程序中扩展我的引擎的 AR 模型,这样移动性就不会抱怨?

How to extend in my app an AR model of my engine so Mobility doesn't complain?

在我的插件中,我从引擎继承了一些模型并添加了 Mobility 设置。

# my enginge
module MyEngine
  class Foo < ApplicationRecord
    def self.say_hi
      return "hi"
    end
  end
end
# my plugin
require 'my-engine'
module MyEngine
  class Foo
    include Mobility
    translates :name, type: :string
  end
end

现在,如果我在 Rails 控制台中查找模型:

MyEngine::Foo.say_hi
ArgumentError: KeyValue backend can only be used by ActiveRecord or Sequel models

如果我注释掉移动设置一切正常:

MyEngine::Foo.say_hi
=> "hi"

如何在我的应用程序中扩展 AR 模型MyEngine::Foo,这样移动性就不会出现问题?

确实有助于从插件扩展引擎模型,但对机动性没有帮助。

要使用修改 MyEngine::Foo 以使用移动性,您需要创建一个初始化程序 config/initializers/mobility_models_extension.rb(确保文件名按字母顺序排列在 mobility.rb 文件之后)。

:: MyEngine::Foo(:include, Mobility)
:: MyEngine::Foo.send(:translates, :name, type: :string)

senddocumentation and initializers documentation