更新问题
这是我根据一些研究和发现所做的。
第 1 步- 我在我的 Rails 3 项目中有这个模块并将它放在我的 lib 文件夹中
# lib/enumerable.rb
module Enumerable
def sum
return self.inject(0){|acc,i|acc +i}
end
def average
return self.sum/self.length.to_f
end
def sample_variance
avg=self.average
sum=self.inject(0){|acc,i|acc +(i-avg)**2}
return(1/self.length.to_f*sum)
end
def standard_deviation
return Math.sqrt(self.sample_variance)
end
end
第 2 步- 根据这篇博客文章,在 Rails 3 中,您的 lib 文件夹不会自动加载。为了加载这个模块,你需要去你的config / application.rb
并输入:
config.autoload_paths += %W(#{config.root}/lib)
第 3 步- 然后在您的模型中,我的理解是您输入此内容以获取模块。
class MyModel < ActiveRecord::Base
include Enumerable
end
第 4 步- 然后我尝试重新启动 rails 服务器并尝试一下,当我认为它是真的时,我得到了错误。
MyModel.respond_to?('sample_variance')
# false, when it should be true
我究竟做错了什么?我不应该变得真实吗?