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

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

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

240閲覧

deviseなしのDM機能を作成したい

退会済みユーザー

退会済みユーザー

総合スコア0

0グッド

0クリップ

投稿2022/09/25 12:53

先日、掲載されているものに応募をして、応募者と掲載者のDM機能の作成で質問をした際に、devise関連で不具合を起こしていると指摘していただき、すでにログイン機能を完成していたことから、deviseを外してDM機能を作成しなおす事にしました。
その時点ではマイグレーションファイルから
・Room(DMのルーム)
・Entry(ルームに入れるユーザーを判別)
・message(メッセージを送る機能)
この3点はdeviseなし後も有効に使えるかなと思っています。
そこから作成をしていたのですが、応募ボタンが表示されなくて困っています。
plan_controllerのshowからルームの作成状況を聞き出して、
閲覧している掲載に応募(roomが作成されている)状況ならメッセージへ飛ぶボタン。
初めて応募する場合(roomが作成されていない)状況なら応募できるようにviewの
コードを書きました。
しかし実行してみると、応募ボタンも、メッセージへのボタンも何もありません。
なぜ表示されないのでしょうか?

怪しい箇所を載せさせていただきます。
・view/plan/showの応募ボタン箇所

<% if @is_room == true %> <%= link_to 'メッセージへ', room_path(@room_id), class:"btn btn-primary btn-lg plan-show-chat" %> <% else %> <% form_for @room do |f| %> <% fields_for @entry do |e| %> <%= e.hidden_field :user_id, value: @plan.user.id %> <% end %> <%= f.submit "応募", class:"btn btn-primary btn-lg plan-show-chat"%> <% end %>

・plans_controllerのshow

def show @plan=Plan.find(params[:id]) @currentUserEntry=Entry.where(user_id: current_user.id) @userEntry=Entry.where(user_id: @plan.user.id) unless @plan.user.id == current_user.id @currentUserEntry.each do |cu| @userEntry.each do |u| if cu.room_id == u.room_id then @isRoom = true @roomId = cu.room_id end end end if @isRoom else @room = Room.new @entry = Entry.new end end end

色々とDM機能について検索してみるとuserからのDM機能が多く、その他からDMが作成されているものがなく、私自身の流れや構成の解釈や分析が大丈夫か初心者の為、不安です。
下記のサイトのuser_controllerのcreateに記述する箇所をplan_controllerに記述したのですが掲載(plan)から応募してDM機能が作動する際はplan_controllerに記述してよいのでしょうか?
https://qiita.com/bindingpry/items/6790c91f374acc25bea2

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

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

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

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

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

no1knows

2022/09/25 16:38

質問と全く関係なくて恐縮ですが…いろんな考え方があるのでなんとも言えないですが、個人的にユーザー認証を自分で実装するのはセキュリティ的に不安です。 なので僕がTS445さんなら「新しいプロジェクト」を作り直して下記のような流れで作っていくと思います。 ①Deviseで認証機能を実装する ②上記がきちんと動いていることを確認する ③DM機能を実装する ちなみに上記のコードだとcurrent_userが利用されています。Deviseを利用していないとするとcurrent_userはどのように定義しているのかを確認する必要があるかと思います。
退会済みユーザー

退会済みユーザー

2022/09/26 03:02 編集

なるほど。 今のプロジェクトのuserをdevise仕様に修正することは可能でしょうか? 今のプロジェクトのテーブルをいったん削除して、devise使用のuserテーブルを作成するということは
no1knows

2022/09/26 06:56

個人的には、ちょっと面倒だと思うのですが、もう少しDeviseの使い方を把握するうえでも最初からやり直したほうが良いと思います!
退会済みユーザー

退会済みユーザー

2022/09/26 07:05

はい!最初からやり直してみることにしました。 ちょっと気落ちする部分もありましたが、deviseの勉強だと思ってやり直しました。 頑張ってみます!
guest

回答1

0

ベストアンサー

プロジェクトを作り直して1から作成しなおします。

投稿2022/09/26 03:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問