8

named_scope特定の列に固有の戻りレコードを持つことは可能ですか?

例えば

named_scope :unique_styles, :order =>"title desc", :limit => 3

これで3つのスタイルが得られますが、タイトルが異なることを確認したい場合はどうすればよいですか?この場合、同じスタイルのレコードが3つある可能性があるため、このnamed_scopeに一意のタイトルの値のみを指定する必要があります。

だから["style 1", "style 1", "style 1"]不可能です、それはそれ自身に与えることを強制します["style 1", "some style 2", "maybe another 3"]

  • groupはそれをするかもしれないと思います、そして私は今それを使っています。誰かがコメントを持っているなら、それは素晴らしいことです。
4

3 に答える 3

13

おそらく、ファインダーとnamed_scopesの:groupオプションを調べたいと思うでしょう。

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title"
于 2010-01-14T00:28:04.937 に答える
3

Rails 3 peepsの場合、デイジーチェーンスタイルで実行できます。

scope :unique_styles, order("title DESC")
                      .select("DISTINCT title")
                      .limit(3)
于 2012-02-08T06:10:00.743 に答える
2

本当に必要なのがタイトルだけの場合、これはMySQLで実行する必要があります。(他のエンジンがDISTINCTをサポートしているかどうかは調べていません。)

named_scope :unique_styles, :select => 'DISTINCT title', :order => 'title desc', :limit => 3
于 2010-01-14T00:28:41.097 に答える