1

对于 ruby​​ 开发人员来说,这应该是一件容易的事。我正在玩一个 gem,我需要继承模块变量的帮助。代码应该比我说得更好:

module SomeModule
    extend ActiveSupport::Concern
    attr_accessor :bbonified

    class Railtie < Rails::Railtie
        initializer "some_module.study" do
            Rails.application.eager_load!
            # => I WANT TO ACCESS HERE
            puts @bbonified
        end
    end

    module ClassMethods
        def bbonify(*columns)
            # => WHAT I DEFINE HERE
            @bbonified = columns
        end
    end
end

ActiveRecord::Base.send(:include, SomeModule)
4

1 回答 1

0

您将无法@bbonified直接访问,这是导入此模块的类中的局部变量。

您需要定义一个单独的访问器方法来检索它:

module ClassMethods
  def bbonified
    @bbonified
  end
end

然后稍后您需要以某种方式引用它,但是由于您只是在谈论一个模块,它将取决于扩展了哪个类。

Rails.application.eager_load!
SomeClass.bbonified
于 2013-05-18T00:36:11.910 回答