[解決済み] Rails: カラムからユニークな値を選択する
2022-02-19 06:59:45
質問内容
すでに動作するソリューションを持っているのですが、なぜこれが動作しないのか、どうしても知りたいのです。
ratings = Model.select(:rating).uniq
ratings.each { |r| puts r.rating }
選択されますが、ユニークな値は表示されず、重複を含むすべての値が表示されます。そして、それはドキュメントに書かれています。 http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
解決方法は?
Model.select(:rating)
この結果は
Model
オブジェクトを作成します。プレーンな評価ではなく そして
uniq
の観点からは、全く異なるものです。これを使えばいい。
Model.select(:rating).map(&:rating).uniq
またはこれ(最も効率的)。
Model.uniq.pluck(:rating)
Rails 5+
Model.distinct.pluck(:rating)
更新情報
どうやら、rails 5.0.0.1 では、上記のような "トップレベル" クエリにのみ動作するようです。コレクションプロキシ("has_many"リレーションなど)では動きません。
Address.distinct.pluck(:city) # => ['Moscow']
user.addresses.distinct.pluck(:city) # => ['Moscow', 'Moscow', 'Moscow']
この場合、クエリの後に重複排除を行う
user.addresses.pluck(:city).uniq # => ['Moscow']
関連
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Ruby on Railsのマイグレーションで、カラムをユニークにしてインデックスを作成するにはどうすればよいですか?
-
[解決済み] Railsです。ActiveRecordでデフォルト値を設定するにはどうすればよいですか?
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】修正方法:エラー:'<ファイル名>'にチェックアウトされたコミットがない fatal: コマンドプロンプトで "git add ." を入力するとファイルの追加に失敗する
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".