15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CRUD機能と7つのアクションの関係性

Last updated at Posted at 2019-06-25

#実装におけるそれぞれの役割

CRUD機能とは、ほぼ全てのソフトウェアが有する4つの永続的な基本機能の頭文字をそれぞれ並べた用語のことをいう。 その4つの機能とは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)を指す。

7つのアクションとは、Railsにおけるコントローラの基本アクションを指す。
具体的には、index、new 、create 、edit 、show 、update 、destroy の7つを指す。
詳しくわ参考記事を参照

#1.Createの実装
##newアクション
newアクションは、これから新しく新規投稿する時にアクションするため、定義するだけでよい。
newアクションが作動すると、新規投稿画面へと移動する。


def new
end

##createアクション
新規投稿画面から 投稿した際にビューから送られる特定の情報(params,名前や文章などのこと)を受け取り、新たにDBのテーブルに送られる。


def create
    Tweet.create(image: tweet_params[:image], text: tweet_params[:text], user_id: current_user.id)
end

#2.Readの実装
##indexアクション 
indexアクションは、DBのあるテーブルの情報を全て取り出す。


def index
    @tweets = Tweet.includes(:user)
end

##showアクション
showアクションは、indexアクションの中から、さらに個別の具体的な情報をDBのあるテーブルから取り出す。

def show
    @tweet = Tweet.find(params[:id])
    @comments = @tweet.comments.includes(:user)
end

#3.Updateの実装 (Createの実装と同じ)
##editアクション 
編集したい情報を指定する。

def edit
    @tweet = Tweet.find(params[:id])
end

##updateアクション

現在ログイン中のユーザーと編集したい情報のuser_idが一致すれば、updateアクションが作動する。そして、編集内容が更新される処理の流れは、createアクションと同じ

 def update
    tweet = Tweet.find(params[:id])
    if tweet.user_id == current_user.id
      tweet.update(tweet_params)
    end
 end

#4.Deleteの実装
##destroyアクション

updateアクションと同じ実装

#5.簡易ブログアプリを作成した時のソースコード


class TweetsController < ApplicationController
  
  before_action :move_to_index, except: [:index, :show]

  def index
    @tweets = Tweet.includes(:user).page(params[:page]).per(5).order("created_at DESC")
  end

  def new
  end

  def create
    Tweet.create(image: tweet_params[:image], text: tweet_params[:text], user_id: current_user.id)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    if tweet.user_id == current_user.id
      tweet.destroy
    end
  end

  def edit
    @tweet = Tweet.find(params[:id])
  end

  def update
    tweet = Tweet.find(params[:id])
    if tweet.user_id == current_user.id
      tweet.update(tweet_params)
    end
  end

  def show
    @tweet = Tweet.find(params[:id])
    @comments = @tweet.comments.includes(:user)@comments = @tweet.comments.includes(:user)@comments = @tweet.comments.includes(:user)@comments = @tweet.comments.includes(:user)
  end

  private
  def tweet_params
    params.permit(:image, :text)
  end

  def move_to_index
    redirect_to action: :index unless user_signed_in?
  end
end

<参考記事>
https://qiita.com/morikuma709/items/5b21e9853c9d6ea70295
https://qiita.com/sainu/items/9419424c68ab135472cf
https://qiita.com/aiorange19/items/d7443f403b77a7c98df0

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?