rails:3182
From: Nobuhiro IMAI <nov@y...>
Date: Fri, 04 Sep 2009 03:43:15 +0900 (JST)
Subject: [rails:3182] Re: Active Record での書き方
いまいです。 From: Koichi Shimamura <maf01541_at_nifty.ne.jp> Date: Wed, 02 Sep 2009 17:58:46 +0900 > はじめまして、島村といいます。 > > テーブルからデータを取ってくる時、条件が2つあってどちらか多い方を表示す > るという場合、Active Record で上手に表現する方法があるでしょうか。 > > 例えば以下のような場合です。 > > 「新着情報の最新の10件、または24時間以内に登録されたもの」 結局は、最新 10 件 + それ以外で 24 時間以内に登録されたものってことで すよね。 class Article < ActiveRecord::Base named_scope :r10, :order => "created_at DESC", :limit => 10 named_scope :h24, lambda{|excepts| {:conditions => ["created_at >= ? AND id NOT IN (?)", 24.hours.ago, excepts]} } class << self def recents r10.tap{|r| r.concat(h24(r))} end end end 名前がアレですが、こんな感じでしょうか?この後さらに Ruby レベルで並べ 替えないと使えなさそうですが。 > べたに SQL を書けばいいんですが、Rails っぽく、Ruby っぽく書けないかと > 思っています。 逆に SQL だとどう書くのか知りたいです :-)。 -- Nobuhiro IMAI <nov@y...> Key fingerprint = F39E D552 545D 7C64 D690 F644 5A15 746C BD8E 7106 -- ML: rails@r... 使い方: http://QuickML.com/
3174 2009-09-02 10:58 [maf01541@n... ] Active Record での書き方 3178 2009-09-03 11:36 ┣[ggb03124@n... ] 3181 2009-09-03 13:32 ┃┗[ggb03124@n... ] 3180 2009-09-03 11:58 ┣[sakuro@2... ] 3184 2009-09-04 03:34 ┃┗[ggb03124@n... ] 3185 2009-09-04 05:56 ┃ ┗[ofl@c... ] 3189 2009-09-04 13:12 ┃ ┗[maf01541@n... ] 3205 2009-09-12 01:40 ┃ ┗[maf01541@n... ] 3206 2009-09-12 02:06 ┃ ┣[nov@y... ] 3208 2009-09-12 02:46 ┃ ┃┗[maf01541@n... ] 3209 2009-09-12 03:00 ┃ ┗[ofl@c... ] -> 3182 2009-09-03 20:43 ┗[nov@y... ] 3183 2009-09-03 21:05 ┗[nov@y... ]