Ruby on Rails数据库查询

时间:2016-01-19 15:17:51

标签: ruby-on-rails ruby postgresql sqlite

我使用scaffold生成一个db表,模型和控制器,用于称为' pins'表中有一个名为description的字符串列。具体电话是:

rails g scaffold pins description:string

在它生成的pins_controller文件中,它有以下代码片段:

def index
    @pins = Pin.all
end

Pin.all来电询问数据库中的所有引脚吗? .all是SQL调用还是Ruby on Rails方法?代码在我的测试网站上运行我只是想了解幕后发生了什么。

3 个答案:

答案 0 :(得分:5)

  

Pin.all调用是否查询了DB中的所有引脚?

是的,确实如此。一种简单的检查方法是使用rails console。当您在控制台中运行Pin.all时,它会显示如下内容:

2.1.2-perf :005 > Pin.all
  Pin Load (0.1ms)  SELECT "pins".* FROM "pins"
 => []
  

.all和SQL调用还是Ruby on Rails方法?

all是一个ActiveRecord方法,它将执行SQL查询。请阅读doc了解详情。

答案 1 :(得分:2)

all是一个Rails ActiveRecord方法 ,可在您申请时为您提供 所有记录 ActiveRecord模型

此处Pin.all会返回 图钉 表中的所有现有记录。在后台运行的等效 SQL 查询是

SELECT "pins".* FROM "pins"

答案 2 :(得分:1)

ActiveRecord是一个ORM(对象关系映射),它基本上是一种设计模式,使您能够从面向对象的编程语言(如Ruby)访问关系数据库。

这里使用的是ActiveRecord类方法.all,它返回Pin的所有实例。

.all在后​​台转换为sql,所以你真正做的是:

SELECT "pins".* FROM "pins"