Rails 2.3.5:如何访问lib/directory/file.rb中的代码?

ran*_*its 5 ruby ruby-on-rails

我创建了一个文件,所以我可以在lib/foo/bar_woo.rb中的许多模型中共享一个方法.在bar_woo.rb里面我定义了以下内容:

module BarWoo
  def hello
   puts "hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

然后在我的模型中我做了类似的事情:

  def MyModel < ActiveRecord::Base
      include Foo::BarWoo
      def some_method
         Foo::BarWoo.hello
      end
  end
Run Code Online (Sandbox Code Playgroud)

解释器抱怨它期望bar_woo.rb定义Foo :: BarWoo.

Agile Web Development with Rails一书指出,如果文件包含类或模块,并且文件是使用类或模块名称的小写形式命名的,那么Rails将自动加载文件.因为这个我没有要求它.

定义代码的正确方法是什么?在我的模型中调用它的正确方法是什么?

Jak*_*mpl 5

您可能想尝试:

module Foo
  module BarWoo
    def hello
      puts "hello"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

同样用于呼叫你不会用它来调用Foo::BarWhoo.hello- 这必须使它成为一个类方法.但是include,模块应该可以让你用它来调用它hello.