在gem中扩展rails模型
我想扩展我的rails应用程序中定义的模型调用配置。 出于某些建筑原因,如果我可以在gem中扩展它将会很棒。
但是在我的gem foo.rb文件中,如果我调用我的配置类:
Configuration.class_eval do ... end
它给我这个错误:
configuration: undefined method 'config' for nil:NilClass (NoMethodError)
如果我试过这个:
class Configuration TEST = [:foo, :foo2].freeze end
我无法访问我的rails应用程序中定义的activerecord类。
有没有办法重载gem中的某些rails类?
编辑:像这样的工作:)
module m module ConfigurationExtension extend ActiveSupport::Concern included do CONSTAZ = [:foo].freeze end module ClassMethods def foo1 "foo1" end end module InstanceMethods def foo2 "foo2" end end end end require 'm/mailtie.rb' if defined?(Rails)
在我的railstie文件模块m类mRailtie <:: Rails :: Railtie config.after_initialize do :: Configuration.send(:include,ConfigurationExtension)end end end
假设您使用gem的地方会有特定的类,这是非常错误的。 相反,你应该在gem中创建一个模块,并在你想要的模型中包含/扩展/关注它(在这种情况下是Configuration
)