Book.where(user_id: 1)
この時点で、3件しかないのですが、
Book.where(user_id: 1).joins("LEFT INNER JOIN comments ON comments.user_id = books.user_id").count
こすると200件ぐらいになります。
なぜでしょうか?
モデルの親子関係
User → Book → Comment
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
user.comments みたいに取得したいです。
でしたら、has_many
などを行った上で、preload
を使って取得しましょう。preload
はテーブルをJOIN
せずに、IDで引くことで取得します。
(このようにメソッドを生やすには、has_many
などで紐付けるか、あるいは自前でメソッドを立てる必要があります。)
投稿2019/06/21 05:09
総合スコア145183
0
なぜ 3x80になるか、をうまく説明できる自信がないので、、、
リレーショナルデータベース、外積、内積辺りで調べてみて下さい。
さて、、、
以下のどれか出来ますか?
User,Book、Comment の関係がはっきりしないのでコメントしにくいのです。
・仮に belongs_to、has_* をつけるとしたらどうなるか?でもよいですし
・keyとなる項目(*_idとか)になにがあるか、をもれなく列挙でも良いですし
Bookはユーザの持ち物なのか、そうでないのか
あるBookに対するCommentは複数のUserがつけることがあるのかないのか
などを、Modelが正しく表現している:のが前提なので、それが違っていると話はやわです。
80のCommentの代表的な6~10位を例にして、どういう検索結果を期待しているのか、を具体的に例示して頂けますか。Userも二人居ると良いです。
投稿2019/06/19 14:54
総合スコア23329
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
そうしますと、200位ではなく、30x80=240戻ってますね。
Commentに book_id はありませんか?
あるなら、
"LEFT INNER JOIN comments ON comments.book_id = books.id"
で行けます。
無いと、、、、
30のBookと80のCommentでどういう組み合わせの検索結果が戻ってくることを期待していますか? それが実現するようなkeyの持ち方が必要です。
投稿2019/06/19 12:52
総合スコア23329
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/19 14:01
2019/06/19 14:49
0
Comment.where(user_id: 1) が60件位有ったりしてませんか?
> モデルの親子関係
> User → Book → Comment
と
> Book.where(user_id: 1).joins("LEFT IN、、、
とがマッチしていないようにみえます。
User、Book、Comment の belongs_to、has_* の辺りを見せて下さい
投稿2019/06/19 12:08
総合スコア23329
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/19 12:25
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/21 05:16
2019/06/21 05:17
退会済みユーザー
2019/06/21 05:17
退会済みユーザー
2019/06/21 05:19
2019/06/21 05:19
2019/06/21 05:20
退会済みユーザー
2019/06/21 05:24 編集
2019/06/21 05:58
2019/06/21 05:59
退会済みユーザー
2019/06/21 06:13
2019/06/21 06:14
退会済みユーザー
2019/06/21 06:27
2019/06/21 06:32
退会済みユーザー
2019/06/21 07:49
退会済みユーザー
2019/06/21 07:53