2015-04-01 49 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