Rails

基礎Ruby on Rails Chapter6 レコードの作成、更新、削除

基礎Ruby on Rails Chapter6 フォームとモデル
基礎Ruby on Rails Chapter7 バリデーションと国際化

レコードの作成、更新、削除

作成と更新の流れ

  • 新規作成
    • 空の@memberを作成 → new.html.erbをレンダリング → @memberを作成、保存
      • エラーがある場合 : new.html.erbをレンダリング、エラーメッセージ表示 → @memberを作成、保存
  • 更新
    • @memberをDBから取り出す → edit.html.erbをレンダリング → @memberを取り出し、保存
      • エラーがある場合 : edit.html.erbをレンダリング、エラーメッセージ表示 → @memberを作成、保存

会員の新規登録と更新

ストロング・パラメータの無効化

  • config/application.rbに以下を追記する。
config/application.rb(一部)
config.action_controller.permit_all_parameters = true
  • ストロングパラメータを無効にするとセキュリティが低下するので、最終的には有効にするが、学習のために一旦無効にしておく。

createアクション

app/controllers/members_controller.rb
  def create
    @member = Member.new(params[:member])
    if @member.save
      # 保存が成功したらshowにリダイレクトする。フラッシュ値を設定する。
      redirect_to @member, notice: "会員を登録しました。"
    else
      # エラー発生時はnewに戻る
      render "new"
    end
  end
  • noticeの表示部分を作成する。
app/views/layouts/application.html.erb(一部)
      <main>
        <% if flash.notice %>
          <p class="notice"><%= flash.notice %></p>
        <% end %>

        <%= yield %>
      </main>
  • cssファイルを新規作成する。
app/assets/stylesheets/flash.css
/* フラッシュ */
p.notice {
    border: 1px solid blue;
    padding: 3px;
    background-color: #ccf;
}

image.png

updateアクション

app/controllers/members_controller.rb
  def update
    @member = Member.find(params[:id])
    @member.assign_attributes(params[:member])
    if @member.save
      # 保存が成功したらshowにリダイレクトする。フラッシュ値を設定する。
      redirect_to @member, notice: "会員を更新しました。"
    else
      # エラー発生時はeditに戻る
      render "edit"
    end
  end

image.png

会員の削除

app/controllers/members_controller.rb
  def destroy
    @member = Member.find(params[:id])
    @member.destroy
    # 削除が成功したらindexにリダイレクトする。フラッシュ値を設定する。
    redirect_to @members, notice: "会員を削除しました。"
  end

image.png

image.png

参考
改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)