-
Notifications
You must be signed in to change notification settings - Fork 0
/
level1-zh.srt
429 lines (322 loc) · 8.21 KB
/
level1-zh.srt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
1
00:00:00,330 --> 00:00:01,690
大家好,我是 Gregg Pollack
2
00:00:01,691 --> 00:00:03,620
您正在观看的是“僵尸学 Rails”
3
00:00:03,621 --> 00:00:06,917
(唱)丢掉手上的脑子和肠子
4
00:00:06,918 --> 00:00:10,300
要停止兽性,学习一点 Rails 知识了
5
00:00:10,301 --> 00:00:12,761
因为我们要与时俱进
6
00:00:12,762 --> 00:00:17,990
这是 Envy Labs 出品的“僵尸学 Rails”教学视频
7
00:00:17,991 --> 00:00:22,120
为了更好的理解本课程,你要了解一点 Ruby
8
00:00:22,120 --> 00:00:24,700
如果你还什么都不知道,那么先暂停视频
9
00:00:24,700 --> 00:00:29,500
访问 tryruby.org,学完上面的教程再看
10
00:00:30,360 --> 00:00:34,120
第一课,我们要深入了解 CRUD
11
00:00:34,120 --> 00:00:35,810
先来介绍下 CRUD
12
00:00:35,810 --> 00:00:38,880
如果你已经掌握了这些语言或概念
13
00:00:38,880 --> 00:00:42,600
稍安勿躁,稍后会介绍更高阶的知识
14
00:00:42,700 --> 00:00:44,940
但先要保证每位学员都站在同一起跑线上
15
00:00:44,940 --> 00:00:48,220
我们计划为僵尸发布一些微博
16
00:00:48,220 --> 00:00:49,920
这就是我们要开发的程序
17
00:00:49,920 --> 00:00:51,000
如果想知道为什么开发这么个程序
18
00:00:51,000 --> 00:00:52,770
回到网站首页看一下课程简介
19
00:00:52,770 --> 00:00:54,500
现在我们开始讲课
20
00:00:56,460 --> 00:00:59,980
这里显示了我们的第一个数据库表
21
00:00:59,980 --> 00:01:01,550
看起来有点像电子表格
22
00:01:01,550 --> 00:01:03,530
我们把这个表叫做 tweets
23
00:01:03,530 --> 00:01:09,020
这个表有四行三列
24
00:01:09,020 --> 00:01:11,090
现在,我们要为每一列加上一个标签
25
00:01:11,090 --> 00:01:13,220
第一列叫 ID
26
00:01:13,220 --> 00:01:15,260
第二列叫 status
27
00:01:15,260 --> 00:01:17,690
第三列表示的是僵尸
28
00:01:17,690 --> 00:01:20,840
例如 Ash Bob Jim
29
00:01:20,840 --> 00:01:22,280
我们叫它 zombies
30
00:01:22,280 --> 00:01:28,270
僵尸们面临的第一个挑战是获取 ID 为 3 的微博
31
00:01:28,270 --> 00:01:30,150
我先不告诉你获取的方法
32
00:01:30,150 --> 00:01:34,540
但先告诉你得到的结果,从数据库中获取的内容
33
00:01:34,540 --> 00:01:36,780
在这个挑战中,我们要取回的是一个 Hash
34
00:01:36,780 --> 00:01:38,030
看起来是这样子的
35
00:01:40,550 --> 00:01:44,430
你可能已经了解 Hash,但还是来复习一下吧
36
00:01:44,430 --> 00:01:49,430
如果执行 puts b[:status],会返回“I just ate some delicious brains”
37
00:01:49,430 --> 00:01:52,370
如果执行 puts b[:zombie],会返回“Jim”
38
00:01:52,370 --> 00:01:57,690
如果我们执行下面这行代码,会返回“Jim said I ate some
delicious brains”
39
00:01:57,690 --> 00:02:02,200
你懂的,僵尸就是喜欢吃脑子
40
00:02:02,850 --> 00:02:07,430
现在回过头来看数据库表和面临的挑战
41
00:02:07,430 --> 00:02:08,800
这就是我们面临的挑战
42
00:02:08,800 --> 00:02:12,890
现在我要告诉你解决办法,也就是要编写的代码
43
00:02:12,890 --> 00:02:16,430
代码是 t = Tweet.find(3)
44
00:02:16,730 --> 00:02:18,500
这行代码的结果就是刚才介绍的 Hash
45
00:02:18,500 --> 00:02:22,000
执行 puts t[:id] 得到的结果是 3
46
00:02:22,000 --> 00:02:26,000
执行 puts t[:status] 得到的结果是“I just ate some delicious brains”
47
00:02:26,000 --> 00:02:29,850
执行 t[:zombie] 得到的结果是“Jim”
48
00:02:29,850 --> 00:02:33,470
在 Rails 中可以换种方式写
49
00:02:33,470 --> 00:02:38,050
t[:id] 可以写成 t.id
50
00:02:38,050 --> 00:02:43,720
t[:status] 可以写成 t.status,以此类推
51
00:02:43,720 --> 00:02:48,620
在解决这个挑战时,我们不用 Hash 键,而用这种新写法
52
00:02:48,620 --> 00:02:51,610
下面显示的就是使用新写法得到的结果
53
00:02:51,610 --> 00:02:54,590
Rails 中有个约定要注意一下
54
00:02:54,590 --> 00:02:59,330
注意,在解决挑战所写的代码中,Tweet 的首字母是大写的
55
00:02:59,330 --> 00:03:01,620
内部处理的过程是这样的
56
00:03:01,620 --> 00:03:04,000
先把所有字母变成小写,然后变换成复数
57
00:03:04,000 --> 00:03:09,170
最后在数据库中寻找一个名为 tweets 的表
58
00:03:09,170 --> 00:03:12,080
该介绍 CRUD 了
59
00:03:12,080 --> 00:03:17,280
CRUD 是 Create Read Update Delete 的首字母缩写
60
00:03:17,280 --> 00:03:21,780
下面介绍如何在 Rails 程序中执行这四种操作
61
00:03:21,780 --> 00:03:24,920
首先,要“创建”,可以执行 Tweet.new
62
00:03:24,920 --> 00:03:29,550
更新状态后,调用 t.save 保存结果
63
00:03:29,550 --> 00:03:34,800
要“读取” 就调用 Tweet.find(3),跟之前介绍的方法一样
64
00:03:34,800 --> 00:03:37,250
要“更新”,先要找到对应的微博
65
00:03:37,250 --> 00:03:41,070
修改后再保存记录
66
00:03:41,070 --> 00:03:43,200
要“销毁”,先找到对应的微博
67
00:03:43,200 --> 00:03:47,460
再调用 t.destroy 将其从数据库中删除
68
00:03:47,460 --> 00:03:49,480
接下来我们要详细介绍每种操作
69
00:03:49,480 --> 00:03:52,550
还会教你一些新句法
70
00:03:52,550 --> 00:03:57,680
首先,注意刚才介绍“创建”时,没有指定对象的 ID 值
71
00:03:57,680 --> 00:04:00,280
这是因为 Rails 会自动设定 ID
72
00:04:00,280 --> 00:04:04,220
按需增进数值,存入数据库
73
00:04:04,220 --> 00:04:08,400
创建新微博还有种方法,直接传入 Hash
74
00:04:08,400 --> 00:04:12,700
指定各列的值,然后保存
75
00:04:12,700 --> 00:04:16,640
这两步还可以合二为一,写成 Tweet.create
76
00:04:16,649 --> 00:04:21,500
create 方法可以设定属性值并保存对象
77
00:04:23,190 --> 00:04:27,610
下面介绍“读取”,从数据库中读取数据方法很多
78
00:04:27,610 --> 00:04:30,550
我们可以直接通过 ID 取出对应的记录
79
00:04:30,550 --> 00:04:34,110
也可以批量读取,返回一个数组
80
00:04:34,110 --> 00:04:35,530
可以读取第一个记录
81
00:04:35,530 --> 00:04:37,160
也可以读取最后一个记录
82
00:04:37,160 --> 00:04:38,840
可以读取所有记录
83
00:04:38,840 --> 00:04:40,160
也可以获取记录的数量
84
00:04:40,160 --> 00:04:43,980
数量统计的过程做得很到位
85
00:04:43,980 --> 00:04:47,450
不是读取数据库中的所有记录再统计数量
86
00:04:47,450 --> 00:04:51,260
而是在数据库中执行 count 查询,返回得到的数值
87
00:04:51,260 --> 00:04:54,900
我们还可以读取所有记录,并按名字的字母排序
88
00:04:54,900 --> 00:04:56,800
可以限制只返回10条记录
89
00:04:56,800 --> 00:05:00,380
还可以只读取 Ash 发布的微博
90
00:05:00,380 --> 00:05:02,620
或者把不同的方法放在一起执行“读取”操作
91
00:05:02,620 --> 00:05:05,000
这种方式叫做“方法链”
92
00:05:06,410 --> 00:05:08,230
接下来介绍“更新”操作
93
00:05:08,230 --> 00:05:10,100
还记得“更新”的步骤吧,先找到相应的微博
94
00:05:10,100 --> 00:05:11,940
做些改动,再保存记录
95
00:05:11,940 --> 00:05:15,400
除此之外,我们可以传入一个 Hash
96
00:05:15,400 --> 00:05:18,580
设定属性的值,再保存
97
00:05:18,580 --> 00:05:21,400
我们还可以调用 t.update_attributes
98
00:05:21,400 --> 00:05:25,100
这个方法不仅可以设定属性值,还会保存记录
99
00:05:26,540 --> 00:05:28,000
最后介绍“销毁”操作
100
00:05:28,000 --> 00:05:31,490
僵尸很喜欢毁灭东西,特别是脑子
101
00:05:31,490 --> 00:05:34,830
如前所述,我们可以先找到记录再销毁
102
00:05:34,830 --> 00:05:37,750
不过也可以写成一行代码
103
00:05:38,750 --> 00:05:45,830
如果想销毁所有的微博,只需调用 Tweet.destroy_all
104
00:05:45,830 --> 00:05:47,460
以上就是第一课的内容
105
00:05:47,460 --> 00:05:51,370
课后要自己编写代码,练习本课所学
106
00:05:51,370 --> 00:05:53,790
和你刚认识的僵尸朋友们玩一会儿吧
107
00:05:53,790 --> 00:05:57,500
翻译制作:@andor_chen at Twitter