Как сделать так, чтобы «неделя» начиналась с определенного дня, а не понедельника? - PullRequest
2 голосов
/ 22 апреля 2010

В приложении я строю, я пытаюсь сделать так, чтобы неделя начиналась с субботы. По умолчанию в ruby ​​on rails неделя начинается с понедельника.

Так что, если у вас есть какой-нибудь трюк или патч, чтобы он сработал для меня!

Заранее спасибо!

Ответы [ 3 ]

10 голосов
/ 03 декабря 2011

Мне удалось сделать запрос на извлечение в рельсы, и теперь вы можете передать символьный аргумент методу beginning_of_week. Например, beginning_of_week(:sunday) даст вам воскресенье, если предположить, что неделя начинается с воскресенья. То же самое для end_of_week метода. Но вы должны подождать, пока не выйдут рельсы 3.2, если вы не на переднем крае.

См. Это для получения дополнительной информации: https://github.com/rails/rails/pull/3547

UPDATE: Теперь я жду, когда новый PR будет принят, это позволяет установить начало недели по умолчанию в настройках приложения rails. См. Это для получения дополнительной информации 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 о

4 голосов
/ 22 апреля 2010

Вы можете добавить это в инициализатор, чтобы сделать 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 голосов
/ 22 апреля 2010

Вы можете попробовать заменить методы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...