Ruby on Rails 10章終盤

投稿者: | 2019年8月18日

Ruby on Rails 10章終盤をやりました。

●ページネーション
・ページネーション用のGEMをインストールする。

・必要なところ(User.all)をページネーション化する。(コントローラ/モデルを扱ってるところ)
・User.paginate(page: n)
・リクエストで受け取るページの番号は、params[:page]にある。
↓Nextを踏んだ場合
https://?????/users?page=2

・ページネーション用のUIを組み込む。(ビュー側)
・<%= will_paginate %>

●テスト
フィクスチャにも、「db/seeds.rb」に書いたループをかける。
ただし、
30.times do |n|

<% 30.times do |n| %>
のようにくくる必要がある。

<% 30.times do |n| %>
name_<%= n %>:
name: <%= “User #{n}”” %>
email: <%= “user-#{n}@example.com” %>
password_digest: <%= User.digest(‘password’) %>
<% end %>

●パーシャルのリファクタリング
<ul class=”users”>
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>

userは文字列ではない。
オブジェクト。
_user.html.erbにマッピングされる。

<%= render ‘user’, {user: user} %>
でもよい。

@users.eachなループを消すこともできる。
—–
<ul class=”users”>
<%= render partial: ‘user’, collection:(@users), as:”user” %>
</ul>
—–
<li>
<%= gravatar_for user, size:50 %>
<%= link_to user.name, user %>
</li>
—–

●管理者権限の導入
ユーザモデルにフラグを追加

rails generate migration add_admin_to_users admin:boolean

デフォルトは?
db/migrationの中に書く。

seeds.rbの中で、テスト用に1人adminにしておく。

rails db:migrate:reset
rails db:seed
(テストデータをリセットしたいから。本番でresetは要注意.herokuだと
アプリのIDをそのあとに打たないとresetできないらしい。)

↓こんな感じ

ec2-user:~/environment/sample_app (master) $ heroku pg:reset DATABASE
▸ WARNING: Destructive action
▸ postgresql-fitted-99999 will lose all of its data

▸ To proceed, type xxxx-xxxxxx-999999 or re-run this command with –confirm xxxx-xxxxxx-999999

> xxxx-xxxxxx-999999
Resetting postgresql-fitted-99999 … done
ec2-user:~/environment/sample_app (master) $

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です