《Ruby on Rails Tutorial, Fourth Edition》是2017年09月09日人民郵電出版社出版的圖書,作者是[美]麥可·哈特爾(MichaelHartl)。
基本介紹
- 中文名:Ruby on Rails Tutorial, Fourth Edition
- 作者:[美]麥可·哈特爾(MichaelHartl)
- 出版社:人民郵電出版社
- ISBN:9787115466402
內容簡介,圖書目錄,作者簡介,
內容簡介
《Ruby on Rails 教程 第4版》系統地介紹了如何用Rails構建Web套用。具體內容包括:Ruby、Rail、HTML、CSS、資料庫、版本控制、測試以及部署的基本知識。本書大大降低了初學者的門檻,被讀者和很多程式設計師譽為“Rails入門聖經”。
圖書目錄
第 1 章 從零開始,完成一次部署 1
1.1 簡介 3
1.1.1 預備知識 3
1.1.2 排版約定 5
1.2 搭建環境 6
1.2.1 開發環境 6
1.2.2 安裝Rails 9
1.3 第一個套用 9
1.3.1 Bundler 12
1.3.2 rails server 16
1.3.3 模型-視圖-控制器 19
1.3.4 Hello, world! 20
1.4 使用Git做版本控制 23
1.4.1 安裝和設定 23
1.4.2 使用Git的好處 24
1.4.3 Bitbucket 25
1.4.4 分支、編輯、提交、合併 28
1.5 部署 32
1.5.1 搭建Heroku部署環境 32
1.5.2 Heroku部署第一步 34
1.5.3 Heroku部署第二步 34
1.5.4 Heroku命令 35
1.6 小結 35
第 2 章 玩具套用 37
2.1 規劃套用 37
2.1.1 User模型 40
2.1.2 Micropost模型 40
2.2 Users資源 41
2.2.1 瀏覽用戶相關的頁面 42
2.2.2 MVC實戰 47
2.2.3 Users資源的不足 52
2.3 Microposts資源 52
2.3.1 概覽Microposts資源 52
2.3.2 限制微博的長度 56
2.3.3 一個用戶擁有多篇微博 57
2.3.4 繼承體系 60
2.3.5 部署這個玩具套用 62
2.4 小結 63
第 3 章 基本靜態的頁面 65
3.1 創建演示套用 65
3.2 靜態頁面 69
3.2.1 生成靜態頁面 69
3.2.2 修改靜態頁面中的內容 75
3.3 開始測試 77
3.3.1 第一個測試 78
3.3.2 遇紅 79
3.3.3 變綠 80
3.3.4 重構 82
3.4 有點動態內容的頁面 82
3.4.1 測試標題(遇紅) 83
3.4.2 添加頁面標題(變綠) 84
3.4.3 布局和嵌入式Ruby(重構) 87
3.4.4 設定根路由 92
3.5 小結 94
3.6 高級測試技術 95
3.6.1 MiniTest報告程式 95
3.6.2 使用Guard自動測試 96
第 4 章 Rails背後的Ruby 102
4.1 導言 102
4.1.1 內置的輔助方法 102
4.1.2 自定義輔助方法 103
4.2 字元串和方法 105
4.2.1 注釋 106
4.2.2 字元串 107
4.2.3 對象和訊息傳送 109
4.2.4 定義方法 111
4.2.5 回顧標題的輔助方法 112
4.3 其他數據結構 113
4.3.1 數組和值域 113
4.3.2 塊 116
4.3.3 散列和符號 118
4.3.4 重溫引入CSS的代碼 122
4.4 Ruby類 123
4.4.1 構造方法 123
4.4.2 類的繼承 124
4.4.3 修改內置的類 126
4.4.4 控制器類 128
4.4.5 User類 130
4.5 小結 131
第 5 章 完善布局 133
5.1 添加一些結構 133
5.1.1 網站導航 134
5.1.2 Bootstrap和自定義的CSS 140
5.1.3 局部視圖 145
5.2 Sass和Asset Pipeline 150
5.2.1 Asset Pipeline 150
5.2.2 句法強大的樣式表 151
5.3 布局中的連結 157
5.3.1 ”聯繫”頁面 158
5.3.2 Rails路由 159
5.3.3 使用具名路由 161
5.3.4 布局中連結的測試 163
5.4 用戶註冊:第一步 166
5.4.1 Users控制器 166
5.4.2 ”註冊”頁面的URL 168
5.5 小結 170
第 6 章 用戶建模 172
6.1 User模型 172
6.1.1 資料庫遷移 173
6.1.2 模型檔案 177
6.1.3 創建用戶對象 178
6.1.4 查找用戶對象 180
6.1.5 更新用戶對象 181
6.2 驗證用戶數據 182
6.2.1 有效性測試 183
6.2.2 存在性驗證 184
6.2.3 長度驗證 187
6.2.4 格式驗證 188
6.2.5 唯一性驗證 193
6.3 添加安全密碼 198
6.3.1 計算密碼哈希值 199
6.3.2 用戶有安全的密碼 200
6.3.3 密碼的最短長度 202
6.3.4 創建並驗證用戶的身份 203
6.4 小結 205
第 7 章 註冊 207
7.1 顯示用戶的信息 207
7.1.1 調試信息和Rails環境 209
7.1.2 Users資源 212
7.1.3 調試器 216
7.1.4 Gravatar頭像和側邊欄 217
7.2 註冊表單 222
7.2.1 使用form_for 223
7.2.2 註冊表單的HTML 225
7.3 註冊失敗 228
7.3.1 可正常使用的表單 229
7.3.2 健壯參數 231
7.3.3 註冊失敗錯誤訊息 233
7.3.4 註冊失敗的測試 237
7.4 註冊成功 240
7.4.1 完整的註冊表單 241
7.4.2 閃現訊息 242
7.4.3 首次註冊 244
7.4.4 註冊成功的測試 246
7.5 專業部署方案 248
7.5.1 在生產環境中使用SSL 249
7.5.2 生產環境中的Web伺服器 249
7.5.3 部署到生產環境 250
7.6 小結 252
第 8 章 基本登錄功能 253
8.1 會話 253
8.1.1 Sessions控制器 254
8.1.2 登錄表單 256
8.1.3 查找並驗證用戶的身份 259
8.1.4 渲染閃現訊息 261
8.1.5 測試閃現訊息 263
8.2 登錄 265
8.2.1 log_in方法 265
8.2.2 當前用戶 267
8.2.3 修改布局中的連結 270
8.2.4 測試布局中的變化 274
8.2.5 註冊後直接登錄 277
8.3 退出 279
8.4 小結 281
第 9 章 高級登錄功能 283
9.1 記住我 283
9.1.1 記憶令牌和記憶摘要 283
9.1.2 登錄時記住登錄狀態 288
9.1.3 忘記用戶 295
9.1.4 兩個小問題 296
9.2 “記住我”複選框 300
9.3 測試“記住我”功能 305
9.3.1 測試“記住我”複選框 305
9.3.2 測試“記住”分支 309
9.4 小結 312
第 10 章 更新、顯示和刪除用戶 314
10.1 更新用戶 314
10.1.1 編輯表單 314
10.1.2 編輯失敗 320
10.1.3 編輯失敗的測試 322
10.1.4 編輯成功(使用TDD) 323
10.2 許可權系統 326
10.2.1 必須先登錄 327
10.2.2 用戶只能編輯自己的資料 331
10.2.3 友好的轉向 335
10.3 列出所有用戶 338
10.3.1 用戶列表 339
10.3.2 示例用戶 343
10.3.3 分頁 345
10.3.4 用戶列表頁面的測試 348
10.3.5 使用局部視圖重構 350
10.4 刪除用戶 351
10.4.1 管理員 352
10.4.2 destroy動作 355
10.4.3 刪除用戶的測試 357
10.5 小結 360
第 11 章 激活賬戶 362
11.1 Account Activations資源 363
11.1.1 AccountActivations控制器 363
11.1.2 AccountActivations數據模型 364
11.2 賬戶激活郵件 368
11.2.1 郵件程式模板 368
11.2.2 預覽郵件 372
11.2.3 測試電子郵件 375
11.2.4 更新Users控制器的create動作 377
11.3 激活賬戶 380
11.3.1 通用的authenticated 方法 380
11.3.2 編寫激活賬戶的edit動作 383
11.3.3 測試和重構 386
11.4 在生產環境中傳送郵件 391
11.5 小結 394
第 12 章 重設密碼 395
12.1 Password Resets資源 397
12.1.1 PasswordResets控制器 397
12.1.2 請求重設密碼 399
12.1.3 PasswordResets控制器的create動作 402
12.2 密碼重設郵件 404
12.2.1 密碼重設郵件程式和模板 404
12.2.2 測試電子郵件 409
12.3 重設密碼 410
12.3.1 PasswordResets控制器的edit動作 410
12.3.2 更新密碼 412
12.3.3 測試密碼重設功能 417
12.4 在生產環境中傳送郵件(再談) 421
12.5 小結 423
12.6 證明逾時比較算式 423
第 13 章 用戶的微博 425
13.1 Micropost模型 425
13.1.1 基本模型 425
13.1.2 Micropost模型的數據驗證 427
13.1.3 User模型和Micropost模型之間的關聯 430
13.1.4 改進Micropost模型 433
13.2 顯示微博 436
13.2.1 渲染微博 437
13.2.2 示例微博 440
13.2.3 測試資料頁面中的微博 445
13.3 微博相關的操作 447
13.3.1 訪問限制 448
13.3.2 創建微博 450
13.3.3 動態流原型 457
13.3.4 刪除微博 462
13.3.5 微博的測試 465
13.4 微博中的圖像 468
13.4.1 基本的圖像上傳功能 469
13.4.2 驗證圖像 474
13.4.3 調整圖像尺寸 476
13.4.4 在生產環境中上傳圖像 478
13.5 小結 481
第 14 章 關注用戶 484
14.1 Relationship模型 487
14.1.1 數據模型帶來的問題(以及解決方法) 487
14.1.2 User模型和Relationship模型之間的關聯 490
14.1.3 關係驗證 492
14.1.4 我關注的用戶 493
14.1.5 關注我的人 496
14.2 關注用戶的Web界面 498
14.2.1 示例關注數據 498
14.2.2 數量統計和關注表單 499
14.2.3 我關注的用戶列表頁面和關注我的用戶列表頁面 507
14.2.4 關注按鈕的常規實現方式 514
14.2.5 關注按鈕的Ajax實現方式 517
14.2.6 關注功能的測試 520
14.3 動態流 522
14.3.1 目的和策略 522
14.3.2 初步實現動態流 524
14.3.3 子查詢 526
14.4 小結 530
14.4.1 後續學習資源 530
14.4.2 本章所學 531
第 1 章 從零開始,完成一次部署 1
1.1 簡介 3
1.1.1 預備知識 3
1.1.2 排版約定 5
1.2 搭建環境 6
1.2.1 開發環境 6
1.2.2 安裝Rails 9
1.3 第一個套用 9
1.3.1 Bundler 12
1.3.2 rails server 16
1.3.3 模型-視圖-控制器 19
1.3.4 Hello, world! 20
1.4 使用Git做版本控制 23
1.4.1 安裝和設定 23
1.4.2 使用Git的好處 24
1.4.3 Bitbucket 25
1.4.4 分支、編輯、提交、合併 28
1.5 部署 32
1.5.1 搭建Heroku部署環境 32
1.5.2 Heroku部署第一步 34
1.5.3 Heroku部署第二步 34
1.5.4 Heroku命令 35
1.6 小結 35
第 2 章 玩具套用 37
2.1 規劃套用 37
2.1.1 User模型 40
2.1.2 Micropost模型 40
2.2 Users資源 41
2.2.1 瀏覽用戶相關的頁面 42
2.2.2 MVC實戰 47
2.2.3 Users資源的不足 52
2.3 Microposts資源 52
2.3.1 概覽Microposts資源 52
2.3.2 限制微博的長度 56
2.3.3 一個用戶擁有多篇微博 57
2.3.4 繼承體系 60
2.3.5 部署這個玩具套用 62
2.4 小結 63
第 3 章 基本靜態的頁面 65
3.1 創建演示套用 65
3.2 靜態頁面 69
3.2.1 生成靜態頁面 69
3.2.2 修改靜態頁面中的內容 75
3.3 開始測試 77
3.3.1 第一個測試 78
3.3.2 遇紅 79
3.3.3 變綠 80
3.3.4 重構 82
3.4 有點動態內容的頁面 82
3.4.1 測試標題(遇紅) 83
3.4.2 添加頁面標題(變綠) 84
3.4.3 布局和嵌入式Ruby(重構) 87
3.4.4 設定根路由 92
3.5 小結 94
3.6 高級測試技術 95
3.6.1 MiniTest報告程式 95
3.6.2 使用Guard自動測試 96
第 4 章 Rails背後的Ruby 102
4.1 導言 102
4.1.1 內置的輔助方法 102
4.1.2 自定義輔助方法 103
4.2 字元串和方法 105
4.2.1 注釋 106
4.2.2 字元串 107
4.2.3 對象和訊息傳送 109
4.2.4 定義方法 111
4.2.5 回顧標題的輔助方法 112
4.3 其他數據結構 113
4.3.1 數組和值域 113
4.3.2 塊 116
4.3.3 散列和符號 118
4.3.4 重溫引入CSS的代碼 122
4.4 Ruby類 123
4.4.1 構造方法 123
4.4.2 類的繼承 124
4.4.3 修改內置的類 126
4.4.4 控制器類 128
4.4.5 User類 130
4.5 小結 131
第 5 章 完善布局 133
5.1 添加一些結構 133
5.1.1 網站導航 134
5.1.2 Bootstrap和自定義的CSS 140
5.1.3 局部視圖 145
5.2 Sass和Asset Pipeline 150
5.2.1 Asset Pipeline 150
5.2.2 句法強大的樣式表 151
5.3 布局中的連結 157
5.3.1 ”聯繫”頁面 158
5.3.2 Rails路由 159
5.3.3 使用具名路由 161
5.3.4 布局中連結的測試 163
5.4 用戶註冊:第一步 166
5.4.1 Users控制器 166
5.4.2 ”註冊”頁面的URL 168
5.5 小結 170
第 6 章 用戶建模 172
6.1 User模型 172
6.1.1 資料庫遷移 173
6.1.2 模型檔案 177
6.1.3 創建用戶對象 178
6.1.4 查找用戶對象 180
6.1.5 更新用戶對象 181
6.2 驗證用戶數據 182
6.2.1 有效性測試 183
6.2.2 存在性驗證 184
6.2.3 長度驗證 187
6.2.4 格式驗證 188
6.2.5 唯一性驗證 193
6.3 添加安全密碼 198
6.3.1 計算密碼哈希值 199
6.3.2 用戶有安全的密碼 200
6.3.3 密碼的最短長度 202
6.3.4 創建並驗證用戶的身份 203
6.4 小結 205
第 7 章 註冊 207
7.1 顯示用戶的信息 207
7.1.1 調試信息和Rails環境 209
7.1.2 Users資源 212
7.1.3 調試器 216
7.1.4 Gravatar頭像和側邊欄 217
7.2 註冊表單 222
7.2.1 使用form_for 223
7.2.2 註冊表單的HTML 225
7.3 註冊失敗 228
7.3.1 可正常使用的表單 229
7.3.2 健壯參數 231
7.3.3 註冊失敗錯誤訊息 233
7.3.4 註冊失敗的測試 237
7.4 註冊成功 240
7.4.1 完整的註冊表單 241
7.4.2 閃現訊息 242
7.4.3 首次註冊 244
7.4.4 註冊成功的測試 246
7.5 專業部署方案 248
7.5.1 在生產環境中使用SSL 249
7.5.2 生產環境中的Web伺服器 249
7.5.3 部署到生產環境 250
7.6 小結 252
第 8 章 基本登錄功能 253
8.1 會話 253
8.1.1 Sessions控制器 254
8.1.2 登錄表單 256
8.1.3 查找並驗證用戶的身份 259
8.1.4 渲染閃現訊息 261
8.1.5 測試閃現訊息 263
8.2 登錄 265
8.2.1 log_in方法 265
8.2.2 當前用戶 267
8.2.3 修改布局中的連結 270
8.2.4 測試布局中的變化 274
8.2.5 註冊後直接登錄 277
8.3 退出 279
8.4 小結 281
第 9 章 高級登錄功能 283
9.1 記住我 283
9.1.1 記憶令牌和記憶摘要 283
9.1.2 登錄時記住登錄狀態 288
9.1.3 忘記用戶 295
9.1.4 兩個小問題 296
9.2 “記住我”複選框 300
9.3 測試“記住我”功能 305
9.3.1 測試“記住我”複選框 305
9.3.2 測試“記住”分支 309
9.4 小結 312
第 10 章 更新、顯示和刪除用戶 314
10.1 更新用戶 314
10.1.1 編輯表單 314
10.1.2 編輯失敗 320
10.1.3 編輯失敗的測試 322
10.1.4 編輯成功(使用TDD) 323
10.2 許可權系統 326
10.2.1 必須先登錄 327
10.2.2 用戶只能編輯自己的資料 331
10.2.3 友好的轉向 335
10.3 列出所有用戶 338
10.3.1 用戶列表 339
10.3.2 示例用戶 343
10.3.3 分頁 345
10.3.4 用戶列表頁面的測試 348
10.3.5 使用局部視圖重構 350
10.4 刪除用戶 351
10.4.1 管理員 352
10.4.2 destroy動作 355
10.4.3 刪除用戶的測試 357
10.5 小結 360
第 11 章 激活賬戶 362
11.1 Account Activations資源 363
11.1.1 AccountActivations控制器 363
11.1.2 AccountActivations數據模型 364
11.2 賬戶激活郵件 368
11.2.1 郵件程式模板 368
11.2.2 預覽郵件 372
11.2.3 測試電子郵件 375
11.2.4 更新Users控制器的create動作 377
11.3 激活賬戶 380
11.3.1 通用的authenticated 方法 380
11.3.2 編寫激活賬戶的edit動作 383
11.3.3 測試和重構 386
11.4 在生產環境中傳送郵件 391
11.5 小結 394
第 12 章 重設密碼 395
12.1 Password Resets資源 397
12.1.1 PasswordResets控制器 397
12.1.2 請求重設密碼 399
12.1.3 PasswordResets控制器的create動作 402
12.2 密碼重設郵件 404
12.2.1 密碼重設郵件程式和模板 404
12.2.2 測試電子郵件 409
12.3 重設密碼 410
12.3.1 PasswordResets控制器的edit動作 410
12.3.2 更新密碼 412
12.3.3 測試密碼重設功能 417
12.4 在生產環境中傳送郵件(再談) 421
12.5 小結 423
12.6 證明逾時比較算式 423
第 13 章 用戶的微博 425
13.1 Micropost模型 425
13.1.1 基本模型 425
13.1.2 Micropost模型的數據驗證 427
13.1.3 User模型和Micropost模型之間的關聯 430
13.1.4 改進Micropost模型 433
13.2 顯示微博 436
13.2.1 渲染微博 437
13.2.2 示例微博 440
13.2.3 測試資料頁面中的微博 445
13.3 微博相關的操作 447
13.3.1 訪問限制 448
13.3.2 創建微博 450
13.3.3 動態流原型 457
13.3.4 刪除微博 462
13.3.5 微博的測試 465
13.4 微博中的圖像 468
13.4.1 基本的圖像上傳功能 469
13.4.2 驗證圖像 474
13.4.3 調整圖像尺寸 476
13.4.4 在生產環境中上傳圖像 478
13.5 小結 481
第 14 章 關注用戶 484
14.1 Relationship模型 487
14.1.1 數據模型帶來的問題(以及解決方法) 487
14.1.2 User模型和Relationship模型之間的關聯 490
14.1.3 關係驗證 492
14.1.4 我關注的用戶 493
14.1.5 關注我的人 496
14.2 關注用戶的Web界面 498
14.2.1 示例關注數據 498
14.2.2 數量統計和關注表單 499
14.2.3 我關注的用戶列表頁面和關注我的用戶列表頁面 507
14.2.4 關注按鈕的常規實現方式 514
14.2.5 關注按鈕的Ajax實現方式 517
14.2.6 關注功能的測試 520
14.3 動態流 522
14.3.1 目的和策略 522
14.3.2 初步實現動態流 524
14.3.3 子查詢 526
14.4 小結 530
14.4.1 後續學習資源 530
14.4.2 本章所學 531
第 1 章 從零開始,完成一次部署 1
1.1 簡介 3
1.1.1 預備知識 3
1.1.2 排版約定 5
1.2 搭建環境 6
1.2.1 開發環境 6
1.2.2 安裝Rails 9
1.3 第一個套用 9
1.3.1 Bundler 12
1.3.2 rails server 16
1.3.3 模型-視圖-控制器 19
1.3.4 Hello, world! 20
1.4 使用Git做版本控制 23
1.4.1 安裝和設定 23
1.4.2 使用Git的好處 24
1.4.3 Bitbucket 25
1.4.4 分支、編輯、提交、合併 28
1.5 部署 32
1.5.1 搭建Heroku部署環境 32
1.5.2 Heroku部署第一步 34
1.5.3 Heroku部署第二步 34
1.5.4 Heroku命令 35
1.6 小結 35
第 2 章 玩具套用 37
2.1 規劃套用 37
2.1.1 User模型 40
2.1.2 Micropost模型 40
2.2 Users資源 41
2.2.1 瀏覽用戶相關的頁面 42
2.2.2 MVC實戰 47
2.2.3 Users資源的不足 52
2.3 Microposts資源 52
2.3.1 概覽Microposts資源 52
2.3.2 限制微博的長度 56
2.3.3 一個用戶擁有多篇微博 57
2.3.4 繼承體系 60
2.3.5 部署這個玩具套用 62
2.4 小結 63
第 3 章 基本靜態的頁面 65
3.1 創建演示套用 65
3.2 靜態頁面 69
3.2.1 生成靜態頁面 69
3.2.2 修改靜態頁面中的內容 75
3.3 開始測試 77
3.3.1 第一個測試 78
3.3.2 遇紅 79
3.3.3 變綠 80
3.3.4 重構 82
3.4 有點動態內容的頁面 82
3.4.1 測試標題(遇紅) 83
3.4.2 添加頁面標題(變綠) 84
3.4.3 布局和嵌入式Ruby(重構) 87
3.4.4 設定根路由 92
3.5 小結 94
3.6 高級測試技術 95
3.6.1 MiniTest報告程式 95
3.6.2 使用Guard自動測試 96
第 4 章 Rails背後的Ruby 102
4.1 導言 102
4.1.1 內置的輔助方法 102
4.1.2 自定義輔助方法 103
4.2 字元串和方法 105
4.2.1 注釋 106
4.2.2 字元串 107
4.2.3 對象和訊息傳送 109
4.2.4 定義方法 111
4.2.5 回顧標題的輔助方法 112
4.3 其他數據結構 113
4.3.1 數組和值域 113
4.3.2 塊 116
4.3.3 散列和符號 118
4.3.4 重溫引入CSS的代碼 122
4.4 Ruby類 123
4.4.1 構造方法 123
4.4.2 類的繼承 124
4.4.3 修改內置的類 126
4.4.4 控制器類 128
4.4.5 User類 130
4.5 小結 131
第 5 章 完善布局 133
5.1 添加一些結構 133
5.1.1 網站導航 134
5.1.2 Bootstrap和自定義的CSS 140
5.1.3 局部視圖 145
5.2 Sass和Asset Pipeline 150
5.2.1 Asset Pipeline 150
5.2.2 句法強大的樣式表 151
5.3 布局中的連結 157
5.3.1 ”聯繫”頁面 158
5.3.2 Rails路由 159
5.3.3 使用具名路由 161
5.3.4 布局中連結的測試 163
5.4 用戶註冊:第一步 166
5.4.1 Users控制器 166
5.4.2 ”註冊”頁面的URL 168
5.5 小結 170
第 6 章 用戶建模 172
6.1 User模型 172
6.1.1 資料庫遷移 173
6.1.2 模型檔案 177
6.1.3 創建用戶對象 178
6.1.4 查找用戶對象 180
6.1.5 更新用戶對象 181
6.2 驗證用戶數據 182
6.2.1 有效性測試 183
6.2.2 存在性驗證 184
6.2.3 長度驗證 187
6.2.4 格式驗證 188
6.2.5 唯一性驗證 193
6.3 添加安全密碼 198
6.3.1 計算密碼哈希值 199
6.3.2 用戶有安全的密碼 200
6.3.3 密碼的最短長度 202
6.3.4 創建並驗證用戶的身份 203
6.4 小結 205
第 7 章 註冊 207
7.1 顯示用戶的信息 207
7.1.1 調試信息和Rails環境 209
7.1.2 Users資源 212
7.1.3 調試器 216
7.1.4 Gravatar頭像和側邊欄 217
7.2 註冊表單 222
7.2.1 使用form_for 223
7.2.2 註冊表單的HTML 225
7.3 註冊失敗 228
7.3.1 可正常使用的表單 229
7.3.2 健壯參數 231
7.3.3 註冊失敗錯誤訊息 233
7.3.4 註冊失敗的測試 237
7.4 註冊成功 240
7.4.1 完整的註冊表單 241
7.4.2 閃現訊息 242
7.4.3 首次註冊 244
7.4.4 註冊成功的測試 246
7.5 專業部署方案 248
7.5.1 在生產環境中使用SSL 249
7.5.2 生產環境中的Web伺服器 249
7.5.3 部署到生產環境 250
7.6 小結 252
第 8 章 基本登錄功能 253
8.1 會話 253
8.1.1 Sessions控制器 254
8.1.2 登錄表單 256
8.1.3 查找並驗證用戶的身份 259
8.1.4 渲染閃現訊息 261
8.1.5 測試閃現訊息 263
8.2 登錄 265
8.2.1 log_in方法 265
8.2.2 當前用戶 267
8.2.3 修改布局中的連結 270
8.2.4 測試布局中的變化 274
8.2.5 註冊後直接登錄 277
8.3 退出 279
8.4 小結 281
第 9 章 高級登錄功能 283
9.1 記住我 283
9.1.1 記憶令牌和記憶摘要 283
9.1.2 登錄時記住登錄狀態 288
9.1.3 忘記用戶 295
9.1.4 兩個小問題 296
9.2 “記住我”複選框 300
9.3 測試“記住我”功能 305
9.3.1 測試“記住我”複選框 305
9.3.2 測試“記住”分支 309
9.4 小結 312
第 10 章 更新、顯示和刪除用戶 314
10.1 更新用戶 314
10.1.1 編輯表單 314
10.1.2 編輯失敗 320
10.1.3 編輯失敗的測試 322
10.1.4 編輯成功(使用TDD) 323
10.2 許可權系統 326
10.2.1 必須先登錄 327
10.2.2 用戶只能編輯自己的資料 331
10.2.3 友好的轉向 335
10.3 列出所有用戶 338
10.3.1 用戶列表 339
10.3.2 示例用戶 343
10.3.3 分頁 345
10.3.4 用戶列表頁面的測試 348
10.3.5 使用局部視圖重構 350
10.4 刪除用戶 351
10.4.1 管理員 352
10.4.2 destroy動作 355
10.4.3 刪除用戶的測試 357
10.5 小結 360
第 11 章 激活賬戶 362
11.1 Account Activations資源 363
11.1.1 AccountActivations控制器 363
11.1.2 AccountActivations數據模型 364
11.2 賬戶激活郵件 368
11.2.1 郵件程式模板 368
11.2.2 預覽郵件 372
11.2.3 測試電子郵件 375
11.2.4 更新Users控制器的create動作 377
11.3 激活賬戶 380
11.3.1 通用的authenticated 方法 380
11.3.2 編寫激活賬戶的edit動作 383
11.3.3 測試和重構 386
11.4 在生產環境中傳送郵件 391
11.5 小結 394
第 12 章 重設密碼 395
12.1 Password Resets資源 397
12.1.1 PasswordResets控制器 397
12.1.2 請求重設密碼 399
12.1.3 PasswordResets控制器的create動作 402
12.2 密碼重設郵件 404
12.2.1 密碼重設郵件程式和模板 404
12.2.2 測試電子郵件 409
12.3 重設密碼 410
12.3.1 PasswordResets控制器的edit動作 410
12.3.2 更新密碼 412
12.3.3 測試密碼重設功能 417
12.4 在生產環境中傳送郵件(再談) 421
12.5 小結 423
12.6 證明逾時比較算式 423
第 13 章 用戶的微博 425
13.1 Micropost模型 425
13.1.1 基本模型 425
13.1.2 Micropost模型的數據驗證 427
13.1.3 User模型和Micropost模型之間的關聯 430
13.1.4 改進Micropost模型 433
13.2 顯示微博 436
13.2.1 渲染微博 437
13.2.2 示例微博 440
13.2.3 測試資料頁面中的微博 445
13.3 微博相關的操作 447
13.3.1 訪問限制 448
13.3.2 創建微博 450
13.3.3 動態流原型 457
13.3.4 刪除微博 462
13.3.5 微博的測試 465
13.4 微博中的圖像 468
13.4.1 基本的圖像上傳功能 469
13.4.2 驗證圖像 474
13.4.3 調整圖像尺寸 476
13.4.4 在生產環境中上傳圖像 478
13.5 小結 481
第 14 章 關注用戶 484
14.1 Relationship模型 487
14.1.1 數據模型帶來的問題(以及解決方法) 487
14.1.2 User模型和Relationship模型之間的關聯 490
14.1.3 關係驗證 492
14.1.4 我關注的用戶 493
14.1.5 關注我的人 496
14.2 關注用戶的Web界面 498
14.2.1 示例關注數據 498
14.2.2 數量統計和關注表單 499
14.2.3 我關注的用戶列表頁面和關注我的用戶列表頁面 507
14.2.4 關注按鈕的常規實現方式 514
14.2.5 關注按鈕的Ajax實現方式 517
14.2.6 關注功能的測試 520
14.3 動態流 522
14.3.1 目的和策略 522
14.3.2 初步實現動態流 524
14.3.3 子查詢 526
14.4 小結 530
14.4.1 後續學習資源 530
14.4.2 本章所學 531
作者簡介
Michael Hartl,Ruby專家,暢銷書作者,教學網站LearnEnough.com創始人之一。因為對Ruby社區的貢獻,於2011年被授予Ruby Hero獎。畢業於哈佛學院,獲得了加州理工學院物理學博士學位,同時還是Y Combinator創業者項目的畢業生。