rails包含在文件夹和模块中

时间:2014-02-13 19:03:55

标签: ruby-on-rails class module include

我在“models / Foo /”文件夹中有一个类Bar:

class Foo::Bar

所以Bar在模块Foo中。

但是如果我创建一个文件来定义模块Foo:

module Foo
  def baz
  end
end
如果我尝试,

方法baz是未定义的:

Foo::Bar.new.baz

为什么呢?这个怎么运作?我怎么做?

1 个答案:

答案 0 :(得分:0)

关键是,Rails并不需要项目中的所有文件。是的,这是真的 - 你可以在Ruby中重新打开模块,但你仍然需要以某种方式加载它。

你还犯了另一个错误。即使您在模块内部定义了一个类,该类也不会拥有模块的方法。为了向课程添加模块的功能,您需要包含扩展类与该模块。

以下是您会发现有用的几个链接:

  1. Ruby Tutorial: Modules - 关于模块的非常简单的教程。
  2. Rails autoloading — how it works, and when it doesn't - 它将帮助您了解Rails如何以及何时加载类。
  3. 希望它有所帮助!