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

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

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

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

Q&A

解決済

1回答

1620閲覧

ruby on rails で中間テーブルに紐づいたデータを取得したい。

matsuzaki1104

総合スコア5

Ruby on Rails 5

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

0グッド

1クリップ

投稿2020/03/03 08:52

前提・実現したいこと

現在ruby on railsを用いてホラー映画のレビューサイトを作成している最中です。
htmlはhamlに変換して使用しています。

ログインしたユーザーが作品ごとに「イイね」をできるように設定し、
そのイイね数ごとにランキング順に設定しようと試み、
データベースに保存されている映画全てをランキング順に並べられるのですが、
映画ごとにジャンルを設けていまして、そのジャンルごとのランキングを表示させる事に苦労しております。

viewのindex

ruby

1.main 2 .main__total 3 総合映画ランキング 4 .main__content 5 - @post.first(5).each do |post| 6 = link_to post_path(post.id) do 7 .main__content__each 8 = image_tag post.images[0][:pic] 9 = post.title 10 .main__zombie 11 ゾンビ映画ランキング 12 .main__content 13 - @post.first(5).each do |post| 14 .main__content__each 15 = image_tag post.images[0][:pic] 16 = post.title

と現在は記述しております。

ゾンビ映画ランキングのeach文の

  • @post.first(5).each do |post|

のeach文のところを
@zombie
のようにしてコントローラーでゾンビ映画のみが取り出せるように定義してあげればイイのかと思い、

該当のコントローラー

ruby

1 def index 2 @post = Post.includes(:images).order("likes_count DESC") 3 # @zombie = @post.where(genre: 'ゾンビ') 4 # @zombie = Post.find_by(genres: [1]) 5 # @zombie = @post.post_genres[1] 6 # @zombie = @post.genres 7 # @zombie = Post.genres 8 # @zombie = Genre.includes(:posts).where(id: 1) 9 # binding.pry 10 @genre = Genre.all 11 end

のようにいろいろ試したのですが、
上手くできずどのような記述をすればよろしいと思われますでしょうか?

データベースは
映画の詳細を記述しているpostsテーブル
https://gyazo.com/418835f50bacc757906a8cd96f6cfbff

映画のジャンルを記述しているgenresテーブル
https://gyazo.com/17b2559e5c4cf24106b123e0f535e092

その中間テーブルに当たるpost_genresテーブル
https://gyazo.com/f68bc1a583b8433e752cd20c04993db1

映画の画像を保存しているimagesテーブルがございます。
https://gyazo.com/54e6b9135e5e90e778c5a6f30b7fb3cb

postsテーブルのidが6〜10が全てgenresテーブルのidが1のゾンビと結びついている
のでこれらを出したいと思っています。

アソシエーションについては下記の通り記述しています。

post.rb

ruby

1class Post < ApplicationRecord 2 has_many :images 3 has_many :genres, through: :post_genres 4 has_many :post_genres 5end 6

post_genre.rb

ruby

1class PostGenre < ApplicationRecord 2 belongs_to :post 3 belongs_to :genre 4end 5

genre.rb

ruby

1class Genre < ApplicationRecord 2 has_many :posts, through: :post_genres 3 has_many :post_genres 4end 5

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これでどうでしょうか

Ruby

1@zombie = Post.joins(post_genres: :genre).includes(:images).where(genres: {id: 1}).order("likes_count DESC")

投稿2020/03/03 16:14

sink66

総合スコア88

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

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

matsuzaki1104

2020/03/04 04:23

解決しました!!! 2日行き詰まっていたので本当にありがとうございます。 自分の力だけでは後100年はかかっていました!!泣 joinsメソッドを用いたこともなかったので改めてどういうものなのか勉強してみます????‍♂️ 大変ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問