2010-12-19 17 views
2

此問題是Another question的延伸,因此我將使用它作爲此問題的基準。如何排序和挑選Rails中的前幾項

說我有一堆票,我想提取並按名稱排序。這很容易,只是做:

@tickets = Ticket.find(:all, :order => 'name') 

但是,有沒有辦法告訴Ticket.find,我只想要第一個x票?我敢打賭,有一種方法可以用直接的SQL來實現,我確信我可以將@tickets縮短到第一個x元素,但我寧願直接採用Ruby方法來獲取所有的元素門票(我有很多「門票」,我不想讓他們全部,這可能花費大量的CPU時間)。

所有幫助表示感謝,並提前致謝!

回答

5

所有你想要做的是:

@tickets = Ticket.find(:all, :order => 'name', :limit => x) 

哪裏x是你想要多少條記錄。

請參閱the Rails documentation瞭解更多條件,您可以將其放入您的find。 (搜索VALID_FIND_OPTIONS。)

+0

這也涵蓋了查詢界面指南:http://guides.rubyonrails.org/active_record_querying.html – 2010-12-19 04:38:12

1

這只是SQL中'limit'參數的擴展。例如,SELECT * FROM ticket ORDER BY name LIMIT 4。因此,它可以在任何ORM中使用,包括ActiveRecord。

1

..和如果你使用Rails 3,你可以把它

@tickets = Ticket.order('name').limit(x).all 
相關問題