0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails2系? pagenateでdistinctしたかった

Posted at

誰が今更こんなことを調べようか。

開発環境

  • Ruby 1.8.7
  • Rails 2.1.0
  • SQLServer2008

なんだこの化石のような環境は

問題

pagenateでDISTINCTが使えない。

    @data = VData.pagenate(:all,
        :select   =>'DISTINCT *', # <= こういうのはNG
        :distinct => true, # <= こんなものはない
        :page => 1,
        :per_page => 20
    ).distinct # <= できません

調査

調べても新しいのしかでないよね。そりゃ。

と思ったらこんな記事が。

paginateの中で
(1):distinctオプションがなぜか不正としてはじかれてしまう

(2)paginateからcountに:distinctが渡されない

だめみたいですね。

結論としてはそのままではできない、ということ。
独自に実装するか、別の方法を考えようね・・・。

そもそも

古いシステムなのでしょうがないと思われるが、
一度しか登録されないのでキーが重複するはずがない、
しかしキーが重複してはいけないテーブルに、
一意制約がなく、何かの偶然で重複して登録されてしまった。

ので、・・・一意制約をつけるでもなく、DISTINCTをつけることに (なんで?)

データ設計からやりなおして・・・?

解決?

ビューを作ってそちらでDISTINCTするようにしました
(元々ビューを使っていたので新たに作った)

・・・と思ったら別の場所でLEFT JOIN 重複したテーブルしてた。
そっちはfindなのでDISTINCTつけようね・・・。同じような取得なのに対処違うの困るなぁ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?