2013-03-12 12 views

Odpowiedz

5

Zakładając, że nie mają dołączyć model (tylko przyłączyć tabela), można wykonać pewne arbitralne SQL za pośrednictwem jednej z istniejących modeli, aby uzyskać ilość:

Question.connection.execute "select count(*) from questions_tags" 

To będzie Ci wynik db zależne obiekt. PostgreSQL, aby uzyskać rzeczywistą liczbę całkowitą z niej z:

Question.connection.execute("select count(*) from questions_tags").first["count"].to_i 
+0

nie wiem o bardziej „Railsy” sposób to zrobić, ale ponieważ Twoje pytanie było o dostępie z poziomu konsoli, wyobraziłem cię” po prostu szukam szybkiego sposobu na policzenie ich do debugowania lub cokolwiek innego. Nie polecałbym powyższego kodu w produkcji. Jeśli potrzebujesz liczby tabel łączenia w swojej aplikacji, możesz rozważyć przeniesienie jej do prawdziwego modelu łączenia. –

+0

Yeh ... masz rację ... to jest do celów debugowania. Po uruchomieniu tego rodzaju zapytań w tabeli łączenia, która ma wiele rekordów (np. 20K), zazwyczaj zajmuje to bardzo dużo czasu? Uruchomiłem go, prawie 2 minuty po tym, jak go opublikowałeś i nadal działa. – marcamillion

+0

To zależy w dużym stopniu od bazowej bazy danych, ale jestem zaskoczony, że 'count (*)' zajęłoby w ogóle w czasie rzeczywistym. Większość DB zna liczność wszystkich swoich tabel bez konieczności ich obliczania. Jeśli twoje zapytanie jest bardziej złożone niż prosty przykład powyżej, może to być spowodowane brakiem indeksów na stole. Wydajność bazy danych to ogólnie bardzo złożona kwestia. –

Powiązane problemy