介護 X ITO 

福祉の業界に携わりながら、IT(プログラム)を0から使用してソフトを作成しようと思っています。その他に介護、プログラムの出来事を発信しています。

【第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 特定の写真を削除する

 

 

それでは、さらばーゆ。

【Git】特定のコミットまで戻したい

$git log  //戻す対象のハッシュ値を調べる

commit ************************

$ git reset --hard ハッシュ値

 

上記にて指定のハッシュの部分まで戻すことが出来る。

 

 

それでは、さらばーゆ。

herokuコマンドについて

git push heroku

  • heokuにpushします。

 

heroku pg:reset DATABASE

  • heroku上のデータベースをリセットする。

 

heroku run rairs db:migrate

 

heroku run  rails db:seed

  • seedファイルをheroku上で実行。

 

heroku restart

  • herokuの再起動

 

 

以上

 

 

それでは、さらばーゆ

第7章】ユーザーを編集・削除・一覧表示してみよう アウトプット

目次

 

renderとredirect_toの違い

  • render:表示させるveiwファイルを指定
  • redirect_to:URL(HTTPリクエストメソッド)を指定

 

参考

qiita.com

 

 

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名追加されます。

反映させるために、

で一旦データベースをリセットし

でデータベースに反映させます。

 

 

ページネーションとは

 

グーグルで検索をしたときに、1ページ目、2ページ目と表示送りが出てくる

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_061318_114639_am

この部分のことです。

  • この表示は、will_pagenateと言うgemファイルで解決します。
  • ページネーションのデザインを手軽に良くするために、bootstrap-will_pagenate gemも追加すると良いです。
  • 同じくbundle installを忘れずに

 

 

 

 

 

それでは、さらばーゆ。