質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

358閲覧

中間テーブルのレコードがdestroyされた場合に通知文を出したいです

azumaken

総合スコア14

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/07/03 13:28

■下記のモデルがあります

・親:User
・子:CareUser
・中間:Intermediate

class User < ApplicationRecord has_many :intermediates, dependent: :destroy has_many :care_users, through: :intermediates class CareUser < ApplicationRecord has_many :intermediates, dependent: :destroy has_many :users, through: :intermediates class Intermediate < ApplicationRecord belongs_to :user belongs_to :care_user validates :user_id, presence: true validates :care_user_id, presence: true

■care_users/edit_index.thml.erbにて、確認ボタンを押すと、中間テーブルにueer_idとcare_user_idのレコードが作られます。これにより、確認ボタンがdisabled: trueに切り替わります。

*care_usersのedit_indexアクションは、各user毎に現在の全care_userを一覧で確認でき、1人1人の情報を見れる。

・care_users/edit_index.thml.erb該当部分 <% @care_users.each do |care_user| %> <tr> <td> <% if care_user.image? %> <img src='<%= care_user.image %>' class="index_icon" alt="ユーザーアイコン"> <% else %> <%= image_tag src='picture-3651039_1920.png', class: "index_icon", alt: "ユーザーアイコン" %> <% end %> </td> <td><%= link_to care_user.name, care_user %></td> <td><%= care_user.department %></td> <td> <div class="index_btn"> <%= form_with(model: Intermediate, url: user_intermediates_path(current_user), local: true) do |form| %> <%= hidden_field_tag :user_id, current_user.id %> <%= hidden_field_tag :care_user_id, care_user.id%> <% if Intermediate.exists?(user_id: current_user,care_user_id: care_user.id) %> <%= form.submit "確認済", disabled: true,class: "btn btn-default " %> <% else %> <%= form.submit "確認", class: "btn btn-primary " %> <% end %> <% end %> </div> </td> <td> <% if current_user.admin?%> <div class="index_btn"> <%= link_to "編集", edit_care_user_path(care_user), class: "btn btn-sm btn-primary" %> <%= link_to "削除", care_user, method: :delete,data: { confirm: "削除してよろしいですか?" },class: "btn btn-sm btn-danger" %> </div> <% end %> </td> </tr> <% end %>
・CareUsersController該当部分 def edit_index @care_user = CareUser.find(params[:id])        @q = CareUser.ransack(params[:q]) @care_users = CareUser.page(params[:page]).per(5) end def update_index @care_user = CareUser.find(params[:id]) redirect_to care_users_edit_index_user_path(current_user) end

■下記はcare_users/edit_index.thml.erbのform_withで指定したurlのアクションです

class IntermediatesController < ApplicationController def create @intermediate = current_user.intermediates.create(intermediate_params) if @intermediate.save redirect_back(fallback_location: params[:page]) end end def destroy @intermediate = Intermediate.find_by(care_user_id: params[:care_user_id], user_id: current_user.id) if @intermediate.destroy redirect_to care_users_edit_index_user_path(current_user) end end private   def intermediate_params   params.permit(:user_id, :care_user_id, :confirmation)   end end

■ 各care_userがupdateされると、作成されていた各care_user_idが入っている全てのレコードが消され、確認ボタンがdisabled: trueになっていた場合は、再度押せるようになります。

・CareUsersController該当部分 def update if @care_user.update_attributes(care_user_params) @intermediate = Intermediate.where(care_user_id: params[:id]) @intermediate.destroy_all flash[:success] = "利用者情報を更新しました。" redirect_to @care_user else render :edit end private def care_user_params params.require(:care_user).permit(:image, :department, :name, :age, :gender, :school, :grade, :contract, :house,:disabled,:eat,:evacuation,:cange_clothes,:diapers, :allergy, :allergy_text,:seizures, :seizures_text, :medicine,:communicate_a,:communicate_summary_a,:communicate_b,:communicate_summary_b,:indoor,:outdoor,:summary, :cuser_confirm, use_day:[]) end end

■これを踏まえた上で、確認ボタンを押した後に再度updateされたcare_userがいるuserのcare_users/edit_index.thml.erbにて「更新された利用者が◯名います。再度確認して下さい」とのメッセージを出したいです。

・care_users/edit_index.thml.erb該当部分 <h1>利用者一覧</h1> <p> <% if %> <%= "更新された利用者が#{@count}人います。再度確認をお願いします"%> <% end %> </p>

■上記のif文と@countをどのように組めば良いかが、わかりません。

* 考察した内容:

・current_userのレコードが消されたcare_user.idを探せば良いかと考えましたが、そもそも初期状態はレコードがない。
・レコード追加され,かつ消されたcare_user_idをどのように指定すれば良いのか。

説明がうまくできず、わかりにくいとは思いますが、解決策を教えて頂けないでしょうか。
宜しくお願い致します。

*もし、足りない情報などがあれば、お申し付けください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問