【发布时间】:2011-07-13 22:21:12
【问题描述】:
问题更新
这是我根据一些研究和发现所做的。
第 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 步 - 根据blog article,在 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
我做错了什么?我不应该说实话吗?
【问题讨论】:
标签: ruby ruby-on-rails-3 module enumerable