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将自动加载文件.因为这个我没有要求它.
定义代码的正确方法是什么?在我的模型中调用它的正确方法是什么?
您可能想尝试:
module Foo
module BarWoo
def hello
puts "hello"
end
end
end
Run Code Online (Sandbox Code Playgroud)
同样用于呼叫你不会用它来调用Foo::BarWhoo.hello- 这必须使它成为一个类方法.但是include,模块应该可以让你用它来调用它hello.