Chciałbym sprawdzić kilka kwerend generowanych przez ActiveRecord, ale nie muszę ich faktycznie uruchamiać. Czy istnieje sposób, aby uzyskać zapytanie, zanim zwróci wynik?Jak mogę zobaczyć, że ActiveRecord generuje dane SQL?
Odpowiedz
Oba te artykuły powinny pomóc Ci zrobić to, co chcesz.
http://weblog.jamisbuck.org/2007/1/8/watching-activerecord-do-it-s-thing
http://weblog.jamisbuck.org/2007/1/31/more-on-watching-activerecord
Ci wciąż prowadzą kwerendy, ale rozwiązują problem, który był naprawdę po, ponieważ kwerendy (a) są idempotentne i (b) nie trwają zbyt długo. –
myślę, że jest pochowany w:
construct_finder_sql,
http://groups.google.com/group/rubyonrails-talk/browse_frm/thread/38c492e3939dd9bf/?pli=1
ogon -f log/development.log
pracuje w ustawieniach domyślnych lub gdy jesteś s et twój poziom rejestratora do DEBUG.
Artykuł Jamis jest nieaktualny, a przynajmniej nie działa z moją aplikacją Rails (prawdopodobnie z innego powodu z 3-letnią aplikacją o wartości 30 000 linii). Jednak to działa w konsoli dowolny czas:
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
Należy zauważyć, że z szynami 3+, można po prostu dołączać do 'to_sql' do zapytania:' Posts.where (: coś => foo) .to_sql' – DGM