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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

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

Q&A

解決済

1回答

1734閲覧

(Rails) showアクションに引っ張ってくるModelデータの整形方法について

mannnakakunn

総合スコア24

Ruby

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

Ruby on Rails

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

Ruby on Rails 4

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

0グッド

2クリップ

投稿2015/12/25 08:36

編集2015/12/25 09:52

###前提・実現したいこと
Youtubeをスクレイピングした動画まとめサイトを作っています。

そこで、showアクションにおいて、関連動画やおすすめの動画を引っ張ってくる機能を実現したいです。
関連動画とは、同じジャンル(genre)を持つ動画の中を人気順に並べたものとします。
おすすめ動画とは、全ジャンル(genre)の動画の中を人気順に並べたものとします。

また、関連動画、おすすめ動画を再生している時には、再生している動画がその一覧からは外れる仕様にしたいと思っています。

###発生している問題・エラーメッセージ

コントローラにおける以下2点の絞り込みの記述方法がわかりません。

  1. 「今再生しているID以外」という絞り込み
  2. 「今再生しているIDと同じジャンル」という絞り込み

なお、アプリケーション自体はアソシエーションなどで複数の階層モデルを作っているわけではなく、単一モデル(dog)で作成しています。

###ソースコード

ruby

1#app/controllers/dogs_controller.rb 2 def show 3 @dog_title = Dog.find(params[:id]).title 4 @dog_url = Dog.find(params[:id]).url.match(/\?([^&]+)/).to_s.sub("?v=","") 5 @related_movie = Dog."???" 6 @recommended_movie = Dog."???" 7 @tags = Dog.tag_counts_on(:tags).order('count DESC') 8 end

なお、挫折したコードが以下のとおりです。
<>の中に何かが入れば実現できるのかなぁ‥と思っていますが…。

ruby

1# おすすめ動画 2@recommended_movie=Dog.<今再生しているID以外のすべて>.order(fav DESC) 3# なお、favは人気を表す変数です。 4 5# 関連動画 6@related_movie=Dog.<今再生しているID以外のすべて>.<引数によって絞り込む>(Dog.find(params[:id]).genre).order(fav DESC)

###補足情報(言語/FW/ツール等のバージョンなど)

Ruby 2.2.2
Rails 4.2
MySQL

ご指導宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

求めている答えになっているかわかりませんが、下のようにすれば、「今再生しているID以外のすべて」を表現できますよ。
.where.not(id: <今再生しているID>)

投稿2015/12/26 02:48

takafumi

総合スコア19

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

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

mannnakakunn

2015/12/26 03:20

takafumi 様 ご回答ありがとうございます。 おかげ様で、今再生しているID以外のすべて、および関連動画の方も取得することができました。 where.not(属性: ...)のようにして絞り込むことができるのですね。 ActiveRecord関係のドキュメントを読んで得た知識が、技術に結びついてないことを反省中です…。 勉強になりました!感謝感激です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問