前提・実現したいこと
Ruby on Rails でuser毎にトレーニングの記録が出来るアプリを作っています。
一つのトレーニングメニューに対して、複数のuserが自分自身のMaxの記録を登録する機能をForm objectを用いて実装しました。
ログインしているuserがそのトレーニングに対してMaxの値を登録しているのかいないかでviewの表示を変更したいのですが、有無の取得方法がわかりません。よろしくお願い致します。
発生している問題・エラーメッセージ
ログインユーザーが登録している場合でも、他のユーザーが登録をしている場合にはデータベース上に先に登録されたデータのみ判別されます。 上記画像の場合、user_id 2 には正しく表示され、user_id 3 には登録されていない場合のviewが表示されます。
該当のソースコード
<% @trainings.each do |training| %> <% if training.max.present? && training.max.user_id == current_user.id %> 登録されている場合のview内容 <% else %> 登録されていない場合のview内容 <% end %> <% end %>
試したこと
controllerの
@user = User.all を
@user = User.where(id: current_user.id)
等のログインユーザー情報のみ取得等試したが、他のエラーが起こり戻しました。
補足情報(FW/ツールのバージョンなど)
'rails', '~> 6.0.0'
【1】
トレーニングテーブルには、どんな値を登録するのでしょうか?
↓みたいにメニューの一覧を登録するだけなのか
「id1、エアロバイク」
「id2、ベンチプレス」
↓みたいに、トレーニングの記録をするテーブルなのか
「id1、4月17日、ユーザ1、ベンチプレス、100kg」
「id2、4月17日、ユーザ1、エアロバイク、10km」
「id3、4月18日、ユーザ1、ベンチプレス、120kg」
「id4、4月18日、ユーザ2、エアロバイク、5km」
【2】
上記の質問に関連して、システムへの理解を深めたいため、以下のコードも質問文に載せてほしいです。
・この view を表示している controller
・model の user, training, max のコード(特に has_many, belongs_to を定義している部分)
・schema.rb の user, training, max 部分
【3】
タイトルに「Form objectで登録されたデータの有無の確認」とありますが、Form object は質問内容に関係ありますか?
ある場合は、その Form object のコードも質問文に載せてください。
【4】
「発生している問題・エラーメッセージ」の内容はコードではないので、「```」を外してください。
あなたの回答
tips
プレビュー