2015-04-01 56 views
2

我一直在網上尋找一個沒有運氣的答案。我在哪裏輸入我的查詢?在rails c?我知道我必須使用ActiveRecord :: base.connection,但我無法確定它必須運行的位置。對不起,如果這是一個愚蠢的問題。如何一步一步在rails中查詢SQL?

回答

6

Rails使用ActiveRecord的所謂的ORM使用SQL數據庫接口:

http://guides.rubyonrails.org/active_record_basics.html

的語法是直截了當的,你可以通過rails console(簡稱rails c)打開你的鐵軌控制檯輸入查詢。

例如,如果我想找到所有的問題表中的記錄,我打開我的控制檯,只需鍵入Question.all

irb(main):001:0> Question.all

...它轉換爲以下SQL查詢:

Question Load (4.2ms) SELECT 'questions'.* FROM 'questions'

如果你想在鐵軌控制檯執行原始的SQL命令,你可以使用ActiveRecord::Base.connection.execute(some_string)與SQL作爲一個字符串對象。

你可以寫SQL字符串直接作爲參數,或者事先聲明爲一個變量:

sql = "some raw sql" 
ActiveRecord::Base.connection.execute(sql) 

退房這個問題更多:Rails raw SQL example

+0

因此,這意味着,如果我需要輸入活動記錄語句它會是ActiveRecord :: base.execute(語句)?如果這是一個複雜的查詢呢?有沒有我寫下所有的文件,然後在軌道控制檯上加載它? – davefogo 2015-04-01 20:18:04

+0

啊,我明白了。起初,我沒有得到你想要執行原始SQL。在這種情況下,您只需使用ActiveRecord :: Base.connection.execute(sql_as_string)。我會更新我的答案。 – sixty4bit 2015-04-01 20:21:33

+0

謝謝sixty4bit!我現在很清楚。 – davefogo 2015-04-01 20:27:44