【问题标题】:Extending ActiveSupport::Concern扩展 ActiveSupport::Concern
【发布时间】:2015-12-29 10:54:05
【问题描述】:

我正在尝试在不同的 Rails 项目中扩展现有的关注点。 该模块存在于我需要的 gem 中:

module Foo
  extend ActiveSupport::Concern
  included do
    #some stuff
  end

  def method_a
  end
end

然后在我的项目中:

module Foo
  extend ActiveSupport::Concern
  included do
    #some other stuff
  end

  def method_b
  end
end

结果是,包括 Foo 在内的对象只有 method_b,并且只在包含时运行#some other stuff。有没有办法让include下的所有代码都运行,所有方法都可以添加?

编辑:gem 和项目都是我的,如果有更合适的解决方案,我不会死心塌地使用 ActiveSupport::Concern。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您不应直接覆盖或扩展关注点。使用一个简单的模块可能会很有用,但关注点被设置为显式扩展:

    module MyFoo
      extend ActiveSupport::Concern
      extend Foo
    
      included do
        #some other stuff
      end
    
      def method_b
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 2020-09-21
      • 2011-09-05
      • 2012-09-14
      • 1970-01-01
      • 2013-05-26
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多