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

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

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

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

SQL

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

Ruby on Rails

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1652閲覧

【Rails】paramsとorder(active record)の組み合わせ方 / メソッドの使い方

nyako

総合スコア45

Ruby

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

SQL

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

Ruby on Rails

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

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2021/04/22 11:49

編集2021/04/22 11:50
ルーティング

Ruby

1 namespace 'api' do 2 namespace 'v1' do 3 resources :actors, only: [:create, :show] 4 end 5 end
Rails Routes 実行後

Ruby

1api_v1_actors GET /api/v1/actors/:id(.:format) api/v1/voice_actors#show
コントローラー

ruby

1def show 2 actor = Actor.select(:id, :name).order(params[:id] :desc).limit(3) 3# 上記order内は間違えています 4 binding.pry 5end
やりたいこと

パラメーターによってorderの条件を変えたい(検索するカラムをparams[id]として検索したい)のですが
どのように記述すれば取り出せるのでしょうか? 違う方法があれば御教授頂きたいです。

直書きだと下記のようになると思います。

ruby

1order(count: desc:) #countカラムを降順で取り出す

中々調べてもorderメソッドで引数にparamsを使って検索しているものがなく、質問させて頂きました。

お手数ですがご回答頂けると幸いです。宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

params[:id]にはidを示す数値じゃなくてカラム名が入っているんですか?
(それはおかしいと思いますがそれは置いておいて、)それであれば、

orderの引数にはハッシュを与えます。

keyがカラム名でvalueが降順か昇順を表すStringかSymbolです。
なので、

.order(params[:id] => :desc)

もしくは

.order(params[:id].to_sym => :desc)

とかで出来るはずです。
params[:id]の中身がカラム名を示す文字列ならですが。

投稿2021/04/22 13:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nyako

2021/04/22 13:48

ご回答本当にありがとうございます!(泣) > params[:id]にはidを示す数値じゃなくてカラム名が入っているんですか? (それはおかしいと思いますがそれは置いておいて、) 確かにそうでした。過去に自身で作成したものを見返して見ると数字のパラメーターでfind(params[:id])のように書いていました。 今僕が行っていることはURI Patternの/:idを無理矢理カラム名に変更しているということですね。。 ただカラム名でコントローラーで検索したいときのルーティングの設定方法、paramsメソッドとして適切なbenza様が思う書き方はございますでしょうか? > orderの引数にはハッシュを与えます。 keyがカラム名でvalueが降順か昇順を表すStringかSymbolです。 1つ気になったのですが、こういったハッシュを与える/シンボル型/String型であるという知識は 公式のorderメソッドのドキュメントを見て都度確認するのでしょうか? このような事聞いて申し訳ないのですが、プロの方にお聞きしたいです。 宜しくお願い致します。
退会済みユーザー

退会済みユーザー

2021/04/22 14:11

> ただカラム名でコントローラーで検索したいときのルーティングの設定方法、paramsメソッドとして適切なbenza様が思う書き方はございますでしょうか? ごめんなさいちょっとこの日本語が分からなくて、、、 検索にルーティングとかは関係ないと思うのですが、多分根本的なご認識がなんかズレてると思います。 > 1つ気になったのですが、こういったハッシュを与える/シンボル型/String型であるという知識は 公式のorderメソッドのドキュメントを見て都度確認するのでしょうか? もちろん初めて使うメソッドは公式のドキュメント確認しますが、クエリビルダー系のメソッドは最終的にSQLに変換するだけなので、なんらかの形でテーブル名や検索条件を指定したりする事が明らかです。 whereとか使った事あると思うのでわかると思いますが、その場合ハッシュかシンボルかStringかIntegerの場合がほとんどじゃないですか? 触ってたら分かると思います。 あとプロじゃないです。僕も初心者です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問