2011-10-04 27 views
5

W końcu zacząłem aktualizować moje aplikacje Railsowe z 2.3.8 do 3.1.0. Oglądałem RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) o kwerendach Active Record.Dlaczego relacja rekordu aktywnego nie jest zwracana w konsoli?

Kiedy otworzyć konsolę (ceowniki) i zrobić kwerendy podobny do tego:

articles = Article.order("name") 

Zamiast powrocie Całość relacji rekord, widzę kwerendy wykonywane. Co ja tu robię źle? Wersja

Rails: 3.1.0

RVM na 1.9.2

Dziękujemy za pomoc!


EDYCJA: Dodałem zrzut ekranu z przykładu. enter image description here

Odpowiedz

7

Robisz wszystko dobrze. Wyświetlane jest zapytanie, ponieważ na wyjściu konsola wywołuje metodę inspect. Spróbuj articles = Article.order("name").class

+0

Dzięki, że wydaje się być problemem. Dodałem zrzut ekranu z przykładu. Czy masz jakiś pomysł, dlaczego metoda inspekcji nie jest wywoływana w przykładowym filmie? – hade

+0

Człowieku, czy walczyłem z tym po raz pierwszy próbowałem grać z Arelem. – jaydel

8

Klasa Relacja ActiveRecord jest skonfigurowany do wykonywania zapytania, gdy metoda query jak .all, .last, .first ... jest wywoływany. Lista metod obejmuje także .inspect, tę samą metodę wywoływaną przez konsolę, aby wyświetlić reprezentację wartości zwracanej.

Z tego powodu wydaje się, że obiekt nigdy nie jest relacją, ponieważ zawsze widać wynik zapytania.

Ale jeśli sprawdzać klasę obiektu, można zauważyć, że jest to relacja

Article.order("name").class 
# => ActiveRecord::Relation 
+0

Dzięki za odpowiedź! Wybrałem odpowiedź Bohdana, ponieważ opublikował ją nieco wcześniej. + – hade

Powiązane problemy