1

在我的插件中,我从引擎继承了几个模型并添加了移动设置。

# 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,以便 Mobility 不会抱怨?

4

1 回答 1

0

这个答案确实有助于从插件扩展引擎模型,但对移动性没有帮助。

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

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

请参阅send 文档初始化程序文档

于 2017-08-29T11:09:44.383 回答