我使用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方法?代码在我的测试网站上运行我只是想了解幕后发生了什么。
答案 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"