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

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

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

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

Ruby

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

851閲覧

条件分岐のところがわかりません。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2018/05/21 19:11

A like_person_twitter_id ==  B twitter_id
&&
B like_person_twitter_id == A twitter_id

この仮ですけどAとBみたいにuserの分け方がわからないです。。

user.find_by_like_parson_twitter_id (params:twitter_id)
== params(:twitter_id)
&&
user.find_by_like_parson_twitter_id (params:twitter_id)
== params(:twitter_id)

と言う無茶苦茶な考えにいたってます。

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

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

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

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

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

mather

2018/05/22 05:01

まずは日本語でやりたいことを整理して書いてみてはどうでしょうか?どんなTwitterアカウントがいる前提で、どのような組み合わせの時に `true` となってほしいのか具体的に記載してください。
退会済みユーザー

退会済みユーザー

2018/05/22 05:14

userのテーブルで、 userが仮にAとBの2人いて、 Aのlike_person_twitter_idがBのtwitter_idかつ Bのlike_person_twitter_idがAのtwitter_idと一致していたら投稿が見れる感じにしたいです。
退会済みユーザー

退会済みユーザー

2018/05/22 05:15

フォローフォロワーの関係は使いません。
guest

回答1

0

userテーブルがあって、あるユーザーから別のユーザーに対して "like" である関係を持っているんですね。
このような関係である場合、 like_person_twitter_id は複数になると思うので、 user_likes などの関係テーブルが別に必要になるのではないでしょうか?

from_twitter_idto_twitter_id
AB
AC
BA

このような関係テーブルができれば、 A で検索した結果の to_twitter_idB が含まれているか調べることができるようになると思います。
Railsでは以下の記事のように has_many などを使ってテーブルの関係性を記述できますし、 A.like?(B) などのメソッドが用意できると読みやすくなりますね。
https://qiita.com/youcune/items/ec1d0b34bd542d8c7f2f

投稿2018/05/22 05:32

mather

総合スコア6753

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

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

退会済みユーザー

退会済みユーザー

2018/05/22 09:21

ありがとうございます! 借りにAとBというuserがいるとして userテーブルに入っているtwitter_idとlike_person_twitter_idを紐付けて Aのlike_person_twitter_id ==  Bのtwitter_id && Bのlike_person_twitter_id == Aのtwitter_id という意味のif文を作りtrueなら相手のhintsテーブルが見れるようにしたいんですが、 どうやってuserの指定をするのかと紐付け方がわからないので教えていただきたいです この文で僕の言いたいことって伝えることができてるでしょうか? 何度もごめんなさい。
mather

2018/05/22 09:33

おそらく「相互フォロー」の状態のことを指しているんだと思いますが、Userモデルの定義が無いのでわからないことが多々あります。 - like_person_twitter_id はユーザーごとに一つだけなのですか?複数個あるモデルなのではないでしょうか。 - ユーザーモデル(AとBのデータ)はデータベースから取得できていますか? 僕だったら、IDが一致するという条件そのものを書くのではなく、Userクラスに def like?(other) を実装して `if A.like?(B) and B.like?(A)` と記述すると思います。
mather

2018/05/22 09:36

そもそもサービス設計上の話ですが、 ユーザーA : 画面を見ている人 ユーザーB : ヒントを持っている人 AがBのヒントを見れる条件: A like B かつ B like A ということで合っていますか?
退会済みユーザー

退会済みユーザー

2018/05/22 15:38

like_person_twitte_idはユーザーに1つです! 月に1度変更できる仕組みです! データベースからの取得可能です。
退会済みユーザー

退会済みユーザー

2018/05/22 15:39

そのとうりです!! 分かりにくい説明ですいません
mather

2018/05/23 02:05

ということは、ログインしているセッションからユーザーAのオブジェクトは取得できるはずですし、ユーザーの操作によってBのtwitter_idなどが取得できるはずですので、user.find(twitter_id_of_B)のような感じでユーザーBのオブジェクトも取得できるはずです。 その後は質問にあった条件式で判定できるのではないでしょうか? 以上具体的な class User などが明らかにされていないため全て推測です。 自分でコードを書いて試してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問