ロイの奮闘記録

PdMをやってるロイの日記です。人のつながりを増やしたいと思いながら、社会と奮闘しています

#59 メッセージ機能

#59 8/27-31 メッセージ機能

 

そもそもメッセージ機能実装に使おうとしている ActionCableとは。

WebSocketって?

・双方向通信のプロトコルプロトコルなのでHTTPとかと同レイヤー)

・ハンドシェイクまではHTTPが行い、コネクション確立したらWebSocketが双方向通信を行う

https://qiita.com/chihiro/items/9d280704c6eff8603389

 

実装モデルに関して

今回の理想機能は、

”各ユーザー同士が1:1でリアルタイムチャットが行えること(user:msg=1:多)”

・一人が複数人のチャットルーム1つに入るのみではなく(user:msg=1:1でもなく)

・一人が複数人のチャットルームにいくつも入れるわけでもない(user:msg=多:多でもない)

 

1.routesに関して

resources :message,:only => [:create, :destroy, :show]

で、POST "/message/show/1" => "message#show"

 

今回だとindexよりshowの方が適正

また1という数字は、messageのルーム番号になるかと。

 

2.Viewに関して

messages/show(当たり前だけどアクション名が来る)なので、

messagesディレクトリのshow.html.erbが大元。

 

その中にパーシャルでfeedとかが入る感じ?

 

usersのsharedフォルダの中ももしかしたら使うかも。

 

3.Controllerに関して 

messages_controller.rbで、def create def showを定義

※Quitaではここがuser.show.htmlで表示

 

---

1.モデル作成

rails generate model Message content:text from_id:integer to_id:integer room_id:string  

2.エラー

def message_room_id(first_user, second_user)
 first_id = first_user.id.to_i
 second_id = second_user.id.to_i
 if first_id < second_id
  "#{first_user.id}-#{second_user.id}"
 else
  "#{second_user.id}-#{first_user.id}"
 end
end

undefined method `id' for nil:NilClass

idが定義されていないと怒られる。

 

以下リンクのように、ログインしていないからその前のcurrent_userがnilになっている気がする

https://teratail.com/questions/67514

 

beforeactionなどを使ってどうやって解決しよう。。。

 

使えそうで使えない

http://bryankawa.hatenablog.com/entry/2017/03/18/130855

ちょっと使えそう

https://b1840943.hatenablog.jp/entry/2018/05/31/231035

 

 

8/31一旦断念