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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2590閲覧

【rails】関連記事の実装

kohekohe91

総合スコア7

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2017/04/03 08:47

編集2017/04/05 05:41

現在、個人的に勉強でブログサイトを作成していて、
該当の記事と同一のタグが付いている記事を取得したいです。

ブログ記事のarticles/[:id]ページで関連記事の実装をする際に、
現在表示している記事にのタグに紐づくその他の記事を取得する方法が分からず悩んでいます。

タグと記事のテーブル紐付けは以下のようにテーブルを設計しています。

model/article.rb

1class Article < ActiveRecord::Base 2 has_many :article_tags 3 has_many :tags, through: :article_tags 4end

model/article_tag.rb

1class Tag < ActiveRecord::Base 2 has_many :article_tags 3 has_many :articles, through: :article_tags 4end

中間テーブル

model/article_tag.rb

1class ArticleTag < ActiveRecord::Base 2 belongs_to :article 3 belongs_to :tag 4end

articleコントローラーのshowアクションで、現在表示している記事と同様のタグの記事一覧を取得するにはどのようにデータを取得すれば良いのでしょうか。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

表示される記事数が指数関数的に増加することが予測されますが大丈夫でしょうか…。
一応コードしては

ruby

1<% @article.tags.joins(:articles).references(:articles).each do |tag| %> 2<%= tag.name %> 3<% tag.articles.each do |article| %> 4<%= link_to article.title ,article_path(article) unless article==@article %> 5<% end %> 6<% end %>

こんな感じですかねー
tag.name
article.title
は想像です。

投稿2017/04/05 06:09

moke

総合スコア2241

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

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

kohekohe91

2017/04/05 07:10

ありがとうございます。 すみません、こちらについて詳細をお伺い出来ますでしょうか。 >表示される記事数が指数関数的に増加することが予測されますが大丈夫でしょうか…。
moke

2017/04/05 07:41

例えば記事とtagが増えてきたとき 10個記事があり平均3個のtagがついて一つのタグに4個記事が紐づいているとすると。 表示されるレコードは12個これが 100個記事があり平均6個のtagがついて一つのタグに40個記事が紐づいてすると。 表示されるレコードは240個というふうにタグ数とタグに紐づいた記事が記事数に比例すると思われるので 表示されるレコードは記事数の二乗に比例するということです。 1000個記事があったときのことは考えたくもありません
kohekohe91

2017/04/05 08:18

ありがとうございます。理解出来ました。 確かに、そうですね。 そうすると、関連記事を実装する場合 通例ですとどのように実装するのが良いのかなどありますでしょうか。 お手数ですが、ご参考までにご教示いただければと。。。
moke

2017/04/05 08:35

重要なのは重み付けです。 例えばアクセス数が多いとか、作成日が新しいとか、更新頻度が早いとかを数値化 して、それらの組み合わせてtagごとに大きい順にtop3を集めてそこからランダムで5件とかいかがでしょうか 本当は流行りのdeeplearningで、その人の行動履歴からお勧めを出したりするとかっこいいのですがw
kohekohe91

2017/04/05 08:47

なるほど。。。 理解出来ました!やってみます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問