【第8章】ユーザーモデルに勤怠基本情報を追加しよう アウトプット
カラム追加について
- rails generate migration add_deparment_to_users department:string
- generateはgで短縮出来る。
- add_~_to_テーブル名と指定することにより、データベースのどのテーブルに変更を加えたいか指定できる。
- department:stringでは、左側がカラム名、右側がデータ型になります。
- 最初に表記のコードの場合、以下の内容になります。
db/migrate/[timestamp]_add_department_to_users.rb
class AddDepartmentToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :department, :string
end
end
- 必ず rails db:migrateで反映させます。
検証(validation)
- モデルに追加することにより、文字の制限等、様々な検証が可能。
- オプションにて、:allow_blankを指定すると、" "空の検証はスキップされ、入力が可能。(allow_nillだとnilのみ検証がスキップされるので" "空はfalseとなる)
strong parameters
- データベース(DB)に入れる値を制限することにより、不正なパラメーターの入力を防ぐ仕組みのこと。(セキュリティ強化)
def user_params
params.require(:user).permit(:name, :email, :department, :password, :password_confirmation)
end
- 指定されたDBは、これで不正を防ぐことが出来る。
それでは、さらばーゆ。
三項演算子について
三項演算子とは、?と:を用いた構文のこと。
条件式として
<条件式> ? <真式> : <偽式>
となる。
上記の式を使いrailsのviewで表記すると
@user.department.present? ? @user.department : "未設定"
<条件式>?[trueの場合の処理]:[falseの場合の処理]
となります。
if文の短縮形と思ってくれれば良いかと思います。
なので実際にif文で表示すると
contoroller側
def show
if @user.department.present?
@no_nil_user = @user.department
else
@no_nil_user = '未設定'
end
end
view側
<%= @no_nil_user %>
となります。
三項演算子を用いれば、view側のみで完結できますので、簡単なコードの時は使用すると良いと思います。
番外編
以下のコード表記で、false,nil値分岐の場合はelse分岐なしで表記できます。
contoroller側
def show
unless @user.department.present?
@user.department = '未設定'
end
end
view側
<%= @user.department %>
それでは、さらばーゆ。
railsのルーティング(root)について
動詞の関連付けについて、忘れないように表記しておく
HTTP動詞 | パス | コントローラ#アクション | 目的 |
---|---|---|---|
GET | /photos | photos#index | すべての写真の一覧を表示 |
GET | /photos/new | photos#new | 写真を1つ作成するためのHTMLフォームを返す |
POST | /photos | photos#create | 写真を1つ作成する |
GET | /photos/:id | photos#show | 特定の写真を表示する |
GET | /photos/:id/edit | photos#edit | 写真編集用のHTMLフォームを1つ返す |
PATCH/PUT | /photos/:id | photos#update | 特定の写真を更新する |
DELETE | /photos/:id | photos#destroy | 特定の写真を削除する |
それでは、さらばーゆ。
第7章】ユーザーを編集・削除・一覧表示してみよう アウトプット
目次
- 目次
- renderとredirect_toの違い
- update_attributesについて
- before_action
- フレンドリーフォアーディングとは
- サンプル用のユーザー作成
- ページネーションとは
renderとredirect_toの違い
- render:表示させるveiwファイルを指定
- redirect_to:URL(HTTPリクエストメソッド)を指定
参考
update_attributesについて
- 複数の属性をまとめて更新・保存するメソッド
- update_attributeだと1つの属性に対し更新・保存になる。
before_action
- controllerにbefore_action :メソッド名と記入すると、アクションが実行される直前に指定したmethodを実行してくれる。
例:
- before_action : logged_in_user, only: [:edit, :update]
- オプションを指定することで、この場合はeditとupdateアクションが実行される直前のみ、logged_in_userが実行される。
フレンドリーフォアーディングとは
- ログインが必要なページ(仮にAページとする)に未ログイン状態でアクセスした場合に、ログイン画面に遷移(せんい)させてログインした後はAページに戻すというものです。
サンプル用のユーザー作成
- Gemファイルの「faker]を使用
- 追加後は、必ず[bundle install]を忘れずに
- db/seeds.rbにコードを入力
db/seeds.rb
User.create!(name: "管理者",
email: "email@sample.com",
password: "password",
password_confirmation: "password")
59.times do |n|
name = Faker::Name.name
email = "email#{n+1}@sample.com"
password = "password"
User.create!(name: name,
email: email,
password: password,
password_confirmation: password)
end
上記の様に記入することで、サンプル用のユーザーが60名追加されます。
反映させるために、
- rails db:migrate:reset
で一旦データベースをリセットし
- rails db: seed
でデータベースに反映させます。
ページネーションとは
グーグルで検索をしたときに、1ページ目、2ページ目と表示送りが出てくる
この部分のことです。
- この表示は、will_pagenateと言うgemファイルで解決します。
- ページネーションのデザインを手軽に良くするために、bootstrap-will_pagenate gemも追加すると良いです。
- 同じくbundle installを忘れずに
それでは、さらばーゆ。