在正在建设的应用程序中,我正试图让星期六的星期开始。在轨道上的红宝石中,默认情况下,星期一是星期一开始的。
所以如果你有任何技巧或补丁让它适合我!
提前致谢!
答案 0 :(得分:10)
我已经设法向rails发出了一个pull请求,现在你可以将symbol参数传递给beginning_of_week
方法。例如,beginning_of_week(:sunday)
会给你一个星期日,假设星期日开始。 end_of_week
方法也是如此。但是你必须等到轨道3.2释放,以防你不在最前沿。
有关详情,请参阅此处: https://github.com/rails/rails/pull/3547
更新: 现在我正在等待新的PR被接受,它可以在你的rails app配置中设置默认的星期开始。有关详细信息,请参阅此https://github.com/rails/rails/pull/5339
更新:
合并!
rafaelfranca merged commit 5428de1 into rails:master from gregolsen:week_start_config 4 months ago
闭
rafaelfranca closed the pull request 4 months ag
0
答案 1 :(得分:4)
你可以把它扔进初始化器,让beginning_of_week
返回星期日:
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Time #:nodoc:
module Calculations
def beginning_of_week
(self - self.wday.days).midnight
end
end
end
end
end
但是,您可以更安全地定义自己的方法并保持库存完整:
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Time #:nodoc:
module Calculations
def traditional_beginning_of_week
(self - self.wday.days).midnight
end
end
end
end
end
答案 2 :(得分:2)
您可以尝试用自己的方法替换Date#wday
和Time#wday
方法。我认为Rails的支持方法如beginning_of_week
等依赖于wday,并且可以开箱即用。
这是一些代码,但它绝对只是一个想法,既没有测试也没有推荐的事情:
require 'activesupport'
#=> true
Time.now.wday
#=> 4
Time.now.beginning_of_week
#=> 2010-04-19 00:00:00 0200
class Time
alias_method :orig_wday, :wday
def wday
(self.orig_wday + 2) % 7
end
end
Time.now.wday
#=> 6
Time.now.beginning_of_week
#=> 2010-04-17 00:00:00 0200