如何在我的应用程序中扩展我的引擎的 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)
见send
documentation and initializers documentation
在我的插件中,我从引擎继承了一些模型并添加了 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)
见send
documentation and initializers documentation