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

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の基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

5491閲覧

ActiveRecordで特定カラムがユニークなレコードを取得したい

torneco

総合スコア7

Ruby

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

SQL

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

Ruby on Rails

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

1グッド

1クリップ

投稿2016/03/20 07:49

編集2016/04/06 06:06

Rails4.2, ActiveRecordの質問です。


idcontentauthor_iduser_id
1本文A21
2本文B42
3本文C34
4本文D13
5本文E42

上記のような、 id, content, author_id, user_id カラムを持つテーブルがあります。

このようなモデルで、 user_id をユニークで検索し、 ActiveRecord::Relation で返ってくるようにしたいのですが、どのように書けばよいでしょうか?

※ 特定カラムだけではなく、全項目のオブジェクトを取得したいです。

http://stackoverflow.com/a/18050316 を試しましたが、うまくいきませんでした。。。

よろしくお願いします!

GO9👍を押しています

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

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

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

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

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

hello-world

2016/03/22 07:52

期待する出力結果も書くと良い結果が得られると思います。
guest

回答1

0

stackoverflow の answer にある
Items.all.to_a.uniq { |item| item.name }
の方法では目的にあわなかったのでしょうか?
この方法の場合は次のようにしました。(質問文のものとは異なる列名、値ですが)
↓は rails c での実行例です。

[8] pry(main)> Order.all
Order Load (0.3ms) SELECT "orders".* FROM "orders" ORDER BY ordered_at DESC
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
| id | client_id | status | price | ordered_at | created_at | updated_at |
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
| 2 | 1 | active | 200 | 2000-01-01 04:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 5 | 2 | payed | 210 | 2000-01-01 04:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 1 | 1 | received | 100 | 2000-01-01 09:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 3 | 1 | payed | 400 | 2000-01-01 09:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 4 | 2 | payed | 110 | 2000-01-01 09:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 6 | 2 | payed | 410 | 2000-01-01 09:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
6 rows in set

[9] pry(main)> Order.all.to_a.uniq { |item| item.status }
Order Load (0.2ms) SELECT "orders".* FROM "orders" ORDER BY ordered_at DESC
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
| id | client_id | status | price | ordered_at | created_at | updated_at |
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
| 2 | 1 | active | 200 | 2000-01-01 04:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 5 | 2 | payed | 210 | 2000-01-01 04:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
| 1 | 1 | received | 100 | 2000-01-01 09:58:33 UTC | 2016-03-12 09:58:33 UTC | 2016-03-12 09:58:33 UTC |
+----+-----------+----------+-------+-------------------------+-------------------------+-------------------------+
3 rows in set

投稿2016/03/23 15:21

編集2016/04/06 12:46
katoy

総合スコア22324

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

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

torneco

2016/04/06 06:05

ありがとうございます!Qを編集しましたが、 ActiveRecord::Relation で値を得たいと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問