

通知機能の作成を目指しているのですが、データの代入がおかしいと感じたので、下記の通知テーブルの中身を見て頂きたいのですが[![画像の説明をここに入力](https://i.stack.imgur.com/Fs0L7.png)](https://i.stack.imgur.com/Fs0L7.png)

テスト環境でuser_id1の人がuser_id2の人に作成した掲載を提案機能から提案を行い、2の人に1の人から提案を受けている旨の通知を行うテストを行っていました。  
visited_id 通知を受け取るユーザーのIDが通知を送る側と同じユーザーIDである事。  
そして提案のIDがsuggest_idに代入されていません。

そこから  
恐らくvisitor_id：user_id1  
visited_id:今回作成した掲載（plan_id）  
plan_id：掲載（こちらはきちんと代入されている模様）  
suggest_id：null（恐らく代入で来ていない）

このような状態になっているのかなと推察したのですが、ご意見を頂きたいです。

その為に関連するコードも載せさせていただきます。  
通知機能関連  
suggest_controller.rb

[code]

    def create
            @suggest = current_user.suggests.build(suggest_params)
            if @suggest.save
              flash[:success] = '提案を送りました'
              # 以下通知機能の箇所
              @plan=Plan.find(@suggest.to_id)
              @plan.create_notification_suggest!(current_user)
              # 以上通知機能の箇所
              redirect_to root_url
            else
              @suggests = current_user.suggests.order(id: :desc)
              flash[:danger] = '提案を送れませんでした'
              redirect_to request.referer
            end
        end
    
[/code]

plan.rb

[code]

    def create_notification_suggest!(current_user)
          # すでに提案されているか検索
          temp = Notification.where(["visitor_id = ? and visited_id = ? and plan_id = ? and action = ? ", current_user.id, user_id, id, 'suggest'])
          # いいねされていない場合のみ、通知レコードを作成
          if temp.blank?
            notification = current_user.active_notifications.new(
              plan_id: id,
              visited_id: user_id,
              action: 'suggest'
            )
            notification.save if notification.valid?
          end
        end
    
[/code]

notifications_helperrb

[code]

    module NotificationsHelper
        def notification_form(notification)
          #通知を送ってきたユーザーを取得
          @visitor = notification.visitor
          #コメントの内容を通知に表示する
          @suggest = nil
          @visitor_suggest = notification.suggest_id
          case notification.action
          when 'suggest' then
            #コメントの内容と投稿のタイトルを取得　      
            @suggest = Suggest.find_by(id: @visitor_suggest)
            @suggest_message =@suggest.message
            @suggest_title =@suggest.title
            tag.a(@visitor.name, href: user_path(@visitor)) + 'が' + tag.a("#{@suggest_title}", href: plan_path(notification.plan_id)) + 'を提案しました'
          end
        end
    end
    
[/code]

バージョン  
Ruby on Rails6

参考サイト  
<https://qiita.com/bty__/items/2db1dd4fcd7945b980f7>


CC BY-SA 4.0
2023-05-29T00:39:58.067
95001
2023-05-30T07:45:12.810
58130
question
ruby-on-rails ruby
通知機能のデータの代入


suggestはplanと関連付けさせていないので、suggestコントローラでsuggestを特定してsuggestモデルで通知に入れる情報を代入していく。


CC BY-SA 4.0
2023-05-30T07:45:12.810
95021
2023-05-30T07:45:12.810
58130
95001
answer