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

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

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

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

Q&A

解決済

1回答

318閲覧

なぜここでbefore_action???

Koyyyyyy

総合スコア55

Ruby on Rails

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

0グッド

1クリップ

投稿2018/01/14 02:20

編集2018/01/14 04:59
class RankingController < ApplicationController layout 'review_site' before_action :ranking def ranking product_ids = Review.group(:product_id).order('count_product_id DESC').limit(5).count(:product_id).keys end end``` というコードがあります。 疑問なんですがこのbefore_actionは必要ないのではないでしょうか。 自分の見解↓ before_actionによって「コントローラのアクションが実行される前にそのrankingメソッドを実行することができる」 よって順番的にrankingというメソッドが実行される→ranking_contrlloerのrankingアクションが実行される→review_site.html.erbが呼ばれる アクションとは→コントローラに存在するインスタンスメソッド しかしそもそもrankingというメソッド一つしかこのcontrollerの中にはないのでbefore_actionで指定しなくても必然的にそうなるのでは???

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

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

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

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

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

scivola

2018/01/14 04:24

コード部分を ``` で囲っていただけますか。(質問を新規作成したときにサンプルが出てきます)
guest

回答1

0

ベストアンサー

RankingControllerranking メソッドがあるからといって,これがアクションのメソッドかどうかは(これだけでは)判断できません。
アクションとなるかどうかは,ルーティング次第です。

もし ranking がアクションのメソッドなのであれば,確かに

rb

1before_action :ranking

は無駄です。(実験してみましたが,無限ループに陥ったりはしませんでした)

一方,ranking がアクションのメソッドでないとすると,このコントローラーはアクションが一つも無いことになり,(このコードが完成形なのであれば)やはりおかしいですね。

いずれにしてもおかしなコードではあると思います。

もう一つおかしな点ですが,ranking メソッド中でローカル変数 product_ids に代入していますが,これはどこかで参照されることは無いので,無駄な代入です。

投稿2018/01/14 04:34

scivola

総合スコア2108

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

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

Koyyyyyy

2018/01/14 05:00

やっぱりそうですよね...... 回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問