Sample users

這節要來建立一些樣本使用者。我們要增加一個 Faker gem,它可以用來建立半真實的姓名和 email。(通常只需要在 development 環境安裝,但在這個例子中,production 環境也要使用 Faker gem):

source 'https://rubygems.org'

gem 'rails',                '4.2.2'
gem 'bcrypt',               '3.1.7'
gem 'faker',                '1.4.2'
.
.
.

執行 bundle

$ bundle install

接著,我們要增加一個 Rake task,在資料庫中建立樣本使用者(seed the database with sample users),Rails 使用一個標準文件完成這個任務:db/seeds.rb

db/seeds.rb

User.create!(name:  "Example User",
             email: "[email protected]",
             password:              "foobar",
             password_confirmation: "foobar")

99.times do |n|
  name  = Faker::Name.name
  email = "example-#{n+1}@railstutorial.org"
  password = "password"
  User.create!(name:  name,
               email: email,
               password:              password,
               password_confirmation: password)
end

上述程式碼先建立了一個樣本使用者,然後又建立了 99 個。create! 方法就像 create 方法一樣,只不過前者會在遇到無效的使用者時拋出例外,後者會回傳 false。這樣做有利於除錯,避免出現無聲無息的錯誤。

接著我們就可以重設資料庫,然後調用 Rake task:

$ bundle exec rake db:migrate:reset
$ bundle exec rake db:seed

Seeding 資料庫的過程可能要一段時間,如果 reset 指令無法作用,得先退出 Rails server 再執行。

執行完 db:seed 之後,就會產生 100 個樣本使用者。最好重啟 Rails server: