CRUD作成

概要

scaffoldを使わずにCRUDアプリを作成する。

Lesson1

事前知識

使用するgenerate コマンド

いつも忘れる「Railsのgenerateコマンド」の備忘録 - maeharinの日記

リンク先にgenerateコマンド別に生成されるファイルが記載されている。 scaffoldを使用しない場合はcontroller, modelを実行すればscaffoldと同じファイルが全て生成されたことになる。

rails generate controller
rails generate model

データベースから対象の投稿情報を取得する方法

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :destroy]

  private
    def set_post
      @post = Post.find(params[:id])
    end

各種処理の前に、set_postメソッドでデータベースから情報を取得している。

rails consoleでオブジェクトを作成する方法

パターン①
post = Post.new
post.title = 'title_01'
post.body = 'body_01'
post.save

パターン②
post = Post.new(title: 'title_01', body: 'body_01')
post.save

パターン③
Post.create(title: 'title_01', body: 'body_01')

記述量が少ないので、パターン③推奨 createメソッドはPostscontrollerのcreateメソッドに記載されている通り、Post.newとpost.saveの2つの処理をまとめたものであることがわかる。

データベースよりオブジェクトを取得する方法

Post.idが1のオブジェクトを取得する。

パターン①
Post.find(1)
パターン②
Post.find_by(id:1)
パターン③
Post.where(id:1)

find, find_by, whereのメソッドで取得できる。(現場Railsp.177にてその他のメソッドも解説されている)

◯find 取得件数:1 idによってオブジェクトを取得する。 データが見つからない場合は例外を返す 記述例)find(params[:id])

◯find_by 取得件数:1 条件を指定してオブジェクトを取得する データが見つからない場合はnilを返す 記述例) find_by(params[:id]), find_by(title: 'title_01')

◯where 取得件数:複数 条件を指定して、条件に適合するオブジェクトを全て取得する find_byと組み合わせることもできる 記述例)User.where(admin: true).find_by(name: '田中')

Lesson1 ワークフロー

環境構築

rails _5.2.4.4_ new crud_kadai
rails generate controller posts index show new edit update 
rails generate model Post title:string body:text
rails db:migrate

注意) rails generate controllerでは記述したアクションに対応したviewsファイルも作成されるため、create, destroyは記述しない方が良い。

新規作成機能

git cloneからの環境構築

git cloneから開発環境を構築する手順

1.git clone

git clone ~

2.アプリSetup

git cloneで作成されたディレクトリに移動してから実行

プロジェクトで使用するGem(Rubyのライブラリ)をインストール (一例)

bundle install --path vendor/bundle

データベースの設定を雛形のdefaultファイルをコピーして作成

cp config/database.yml.default config/database.yml

データベースおよびテーブルの作成

bundle exec rails db:setup

Setupできたか確認

bundle exec rails server

3.GitHub Flowを使う

XXXは各自のブランチ名を記述すること

ブランチ作成

git branch XXX

ブランチ切替え

git checkout XXX

※ブランチの作成と切替え一括処理

git checkout -b xxx

3.変更したコミットをリモートリポジトリへpushする

git add ファイル名
git status #ステージングにファイルが存在しているか確認
git commit -m 'コミットメッセージ'
git status #サジェストで表示されるコマンドを確認
git push --set-upstream origin ブランチ名

upstreamブランチを設定したので、以降はgit pushでOK