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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1118閲覧

条件分岐が複雑で、困っています。

manami0419

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

1クリップ

投稿2020/09/27 10:27

前提・実現したいこと

合コンマッチングアプリを作っています。
つまり複数人対複数人のマッチングアプリです。
お気に入りしたユーザー同士でチャットができるように条件分岐したいのですが、その条件分岐が複雑すぎてわかりません。

アプリの概要を説明します。
現在使用しているモデルは、UserモデルとUserInfoモデルとRoomUserモデルです。
UserInfoモデルはUserが投稿した情報(エリア、人数)が記述してあります。
投稿できる数は、1ユーザーにつき1つです。
その投稿されている情報を他のユーザーはお気に入りに登録することができます。
お互いの投稿にお互いがお気に入りした際に、チャットができるようにしたいです。

今回の問題は、その「お互いの投稿にお互いがお気に入りした際」という条件分岐です。
ここがわからず、半日ほど悩んでおります。。( ; ; )

該当のソースコード

class RoomsController < ApplicationController def new end end

↑チャットルームのコントローラーです。
ここのnewアクション内に、条件分岐をさせたいです。

###favoritesテーブル

ColumnTypeOptions
user_idstringnull: false
user_info_idstringnull: false
  • belongs_to :user
  • belongs_to :user_info

###favoritesデータベース

user_iduser_info_id
112
214
324
445
521
616

これはSequel Proの状態を簡易的に表しています。
一番左の列がidです。
user_idの列がお気に入りをしたユーザーです。
user_info_idの列がお気に入りをされた投稿です。
ここではuser_info_idの数字とそれを投稿したuserのidは同じだと考えてください。

試したこと

rails

1class RoomsController < ApplicationController 2 def new 3 @another_user = User.where.not(id: current_user.id) 4 if (Favorite.user_id.current_user == Favorite.@another_user.user_info_id) && (Favorete.current_user.user_info_id == Favorite.@another_user.user_id) 5 end 6end

rooms_controllerを上記のように記述しました。。

間違っていると思ったので、これで実行はしていません。
どなたかこの条件分岐ができる方いらっしゃいませんか?
ご回答お待ちしています( ;∀;)

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

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

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

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

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

hatsu

2020/09/27 15:57

「AさんのUserInfoにBさんがいいねをしている」 かつ 「BさんのUserInfoにAさんがいいねをしている」(Aさん,BさんはUserモデルのオブジェクト)際の条件分岐って認識であっていますでしょうか
manami0419

2020/09/27 16:29

ご返信ありがとうございます! はい!そのようなご認識で考えていただければと思います^_^
guest

回答1

0

ベストアンサー

回答がつかないので・・・
もっとスマートなやり方があると思うのですが、下記でも期待した値を取得できるかと思います。

お互いの投稿にお互いがお気に入りした

Ruby

1 # 自分がお気に入りのユーザー一覧を取得 2fav_users = Favorite.where(user_id: current_user.id) 3 # 自分がお気に入りのユーザーでかつ、自分をお気に入りにしているユーザーを取得 4Favorite.each do | fav_users | 5 fav_both_users = Favorite.where(user_id: fav_users).where(user_info_id: current_user.id) 6end

投稿2020/09/29 22:49

no1knows

総合スコア3365

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

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

manami0419

2020/09/30 02:55

ご回答いただきありがとうございます! これでうまくいけたのですが、一つ私のミスがありました。。 上記の質問内に記述してある、「ここではuser_info_idの数字とそれを投稿したuserのidは同じだと考えてください。」というのが間違いでした( ; ; ) 新規登録した時間と投稿した時間が一緒ではないからです。 自分より後から新規登録した人が、先に投稿を行なってしまうと、user_info_idとuserのidは別の数字になってしまいます。。 お答えいただいたのに、本当に申し訳ありません( ; ; ) 今その間違いでつまずいているので、もし良ければお答えいただければ嬉しいです。 このコメントをした後にもう一度質問しようと思います。 よろしくお願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問