Mam model o nazwie Story
, który próbuję zamówić przed datą created_at
. Odkąd gospodarzem moją aplikację na Heroku, który używa PostgreSQL, mam następujący w moim kontrolera:Szyny: zamówienie według daty w Postgresie zwracanie nieprawidłowego zamówienia
@stories = Story.find(:all, :order => "DATE(created_at) DESC" , :limit => 11)
Spodziewam się to z uzyskaniem pierwszych 11 z moich opowiadań, uporządkowany według daty utworzenia, z najnowsza historia pierwsza.
Niestety, to nie działa. Większość historii wraca poprawnie, ale pierwsze dwa są odwrócone. To znaczy, najnowsza historia pojawia się na drugiej pozycji na liście.
Dlaczego miałoby to być? Mam podstępne podejrzenie, że moje wyniki nie są w ogóle zamawiane lub są zamawiane w niewłaściwej kolumnie (może id?) I że do tej pory po prostu zostało zamówione tak, jak się spodziewałem, gdy jest wyświetlane na mojej stronie indeksu. Jak mogę go zamówić, tak jak tego oczekuję?
W przypadku, gdy ktoś ma na to ochotę, widok indeksu po prostu wyświetla historie w kolejności. To jest (haml):
- @stories.each do |story|
= render :partial => "event", :locals => { :event => story }
EDIT
jestem podejrzliwy, że created_at
jest kolumną datetime i funkcja DATE(...)
pomija część czasu. Więc zwraca elementy utworzone w tym samym dniu w kolejności losowej. Ponieważ pierwsze dwa opowiadania powstały tego samego dnia, ale w odstępie kilku godzin, co wyjaśniałoby, dlaczego wydają się one "odwrócone". W takim przypadku, jaka byłaby poprawna składnia zamówienia zarówno według daty, jak i godziny?
To załatwiło sprawę. Dzięki. –