def self.first_quarter #一季度 [Date.new(Date.current.year,1,1), Date.new(Date.current.year,4,1)] end
同理:二季度、三季度、四季度、全年 1、类不知道保存在哪里 就放在 lib 目录下建立 date.rb 文件 2、使用中 require 无效。
应该怎么做才能生效?
PS: 尽量不要用 monkey patch
放到 config/initializers/ 目录下即可
config/initializers/
#2 楼 @martin91 更好一些的做法可以是放在 lib 下的文件夹中,然后在 config/initilizers 手动引用,这样看起来比较清晰
#3 楼 @geekjj 嗯嗯,我的习惯是完整或者自己完全开发的模块会放 lib 目录,但是只是对已有类库进行修改,我都是放 config/initializers/,或者用 decorator。
#4 楼 @martin91 非常感谢大家的解答,先按照 martin91 的解决方案,问题解决了。回头再研究 geekjj 和 waraludru 的防范。
#5 楼 @yours2008 补充下,如果打开类多的话,可以用 decorator 的方式,具体就是 config/application.rb 文件加入配置:
config/application.rb
config.to_prepare do # Load application's model / class decorators Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c| Rails.configuration.cache_classes ? require(c) : load(c) end end
这样就可以在启动服务器的时候加载响应文件了:
以我对 ActiveRecord::Base 的扩展为例,相应代码内容为:
ActiveRecord::Base
# app/decorators/models/active_record/base_decorator.rb ActiveRecord::Base.class_eval do def self.query_slave(force = true) # codes here result end end