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