私はRails 5とPostgreSQLを使用しています。 この質問は、以前のバージョンのRails(Rails 4、distinct、uniqなどを使用していましたが、Rails 5で減価償却されて以来私のために働いていませんでした)Rails 5 - uniq属性を持つクエリレコード
Upload
モデルがあり、uuid
という属性があります。 列挙型からuniq
を使用せずに別のuuid
のレコードをフェッチしたいとします。ここで
は私の元のクエリです:
Upload.includes(:user, product: [:catalog]).where(file_type: "product_attachment", product_id: nil, user_id: current_user.id))
distinct
かselect
を追加するとき、私はエラーが出る(と私はここに、オブジェクト全体を必要としながら、これらのメソッドは、多くの場合、モデルから一つだけattributを返すために使用されているようにそれはそう)。
これをRails 5でどのように達成するかについてのアイデアはありますか?サンプルデータと
編集:
アップロード:期待される結果のみが異なるを有する、ID 1と2とのアップロードを(含むことになるよう
id: 1
uuid: 8e8fece82b6b1368ab6f21852c625e85718d210e
id: 2
uuid: 842e7650b4bba97f097d9cf57f47d8160086b7cd
id: 3
uuid: 8e8fece82b6b1368ab6f21852c625e85718d210e
アップロード1及び3は、同じUUIDを有しますuuid)。
テーブル内のデータと予想される結果の最小限の例を作成できますか? Upload.select( 'DISTINCT ON(uploads.uuid)、uploads。*)'のようにselectを使うか、横方向結合のようなものを使うことができます。 – max
@maxちょっと具体的な例を使って編集しました –
@max私はすでにあなたのクエリのような選択を試みましたが、このエラーが発生します: ActiveRecord :: StatementInvalid:PG :: SyntaxError:ERROR:または近くの構文エラー "、" LINE 1:SELECT DISTINCT ON(uploads.uuid)、アップロード。* FROM "アップロード –