Sample microposts

現在要來增加 sample microposts,如果要為所有使用者增加太花時間,所以我們先為前六名使用者增加就好,使用 take 方法:

User.order(:created_at).take(6)

我們計畫為這六名使用者增加各 50 篇 microposts(數量要多於 30 才會分頁)。為了產生 sample content,我們會使用 Faker gem 提供的 Lorem.sentence 方法。

Faker::Lorem.sentence 會回傳 lorem ipsum 文字

以下是增加 sample microposts 的程式碼:

db/seeds.rb

.
.
.
users = User.order(:created_at).take(6)
50.times do
  content = Faker::Lorem.sentence(5)
  users.each { |user| user.microposts.create!(content: content) }
end

然後像之前一樣,重設資料庫,把 seed data 寫進開發資料庫:

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

記得重啟 server。

現在就可以看到初步完成的畫面會長這樣:

接著增加 CSS:(為求方便,以下包含本章會使用到的所有 CSS)

app/assets/stylesheets/custom.css.sass

.
.
.
/* microposts */

.microposts
  list-style: none
  padding: 0
  li
    padding: 10px 0
    border-top: 1px solid #e8e8e8

  .user
    margin-top: 5em
    padding-top: 0

  .content
    display: block
    margin-left: 60px
    img
      display: block
      padding: 5px 0


  .timestamp 
    color: $gray-light
    display: block
    margin-left: 60px

  .gravatar
    float: left
    margin-right: 10px
    margin-top: 5px

aside
  textarea
    height: 100px
    margin-bottom: 5px

span.picture
  margin-top: 10px
  input
    border: 0

這是第一個使用者的頁面:

這是第二個使用者的頁面:

然後是第一個使用者的第二頁:

每篇 micropost 都會顯示發布時間,例如「Posted 1 minute ago.」,這就是 time_ago_in_words 方法實現的結果,過一段時間再重載頁面,時間會自動更新。