w Rails 3.0.10Dlaczego indeksy Rails Weekday są inne niż Ruby?
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
I
ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1
Więc poniedziałek jest 0 w mapowaniu czasu, a 1 w Data mapowania.
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/time/calculations.rb
Mam ochotę zacząć od niedzieli, ponieważ zero jest bezpieczniejsze, powszechniejsze i bardziej prawdopodobne, że zrozumie je ktoś inny. Miałem nadzieję, że zrozumiem historię/rozumowanie na wypadek, gdy coś przeoczę.
Mój przypadek użycia: Przechowuję dzień tygodnia bezpośrednio w mojej db. Pomyślałem, że przechowywanie jako liczba całkowita byłoby wydajniejsze i łatwiejsze w pracy niż przechowywanie "Monday", "Tuesday", itp.
PS Miałem świetny pomysł, aby zrobić coś takiego. Mapuj tam iz powrotem z łańcuchów w dni powszednie wewnątrz metod (ukrywając liczbę całkowitą).
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Time::DAYS_INTO_WEEK[day_of_week.downcase.to_sym]
Time::DAYS_INTO_WEEK.to_a.select{|k, v| v == start_day }.first.first.to_s.capitalize
Nie wiem, dlaczego indeksy są takie, jakie są, ale uruchamianie 'Date.today.wday' w' irb', a także 'raili c' obie dotyczą tego samego dnia tygodnia (tj. 1 w poniedziałek). Ten sam wynik z 'Time.now.wday'. Te informacje mogą być przydatne (http://makandra.com/notes/1074-deal-difail-ways-of-counting-weeks-and-weekdays-in-ruby). – Zabba
Masz rację. "Problem", który mam, polega na tym, że dostępne mapowanie jest niespójne. Miałem nadzieję użyć wewnętrznego skrótu do mojego mapowania. (i dziękuję za link) –
A w szynach są w rzeczywistości stałe - http://api.rubyonrails.org/classes/Date.html Spodziewałem się mieć ustawienie do odbioru na początku tygodnia. – Ninad