2010-12-19 11 views
2

この質問は、Another questionの拡張のようなものなので、この質問のベースラインとして使用します。Railsの最初のいくつかの項目をソートして選ぶ方法

私は、名前でフェッチしてソートしたいと思っているチケットがたくさんあります。

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

しかし、私は最初のxのチケットを望んでいることをTicket.find伝える方法があります:それはちょうど行い、十分に簡単ですか?私はまっすぐSQLでこれを行う方法があると賭けている、と私はちょうど@ticketsを取ることができ、最初のx要素に短縮することができると確信しているが、私はむしろすべてを取得しないストレートRubyの方法チケット(私は非常にたくさんのチケットを持っていますが、それらをすべて手に入れたくないので、CPU時間がかかることがあります)。

すべてのご協力をいただきありがとうございます。

答えて

5

あなたがしたいすべてがある:xは、あなたが望むどのように多くのレコードである

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

findに追加できる条件については、the Rails documentationを参照してください。 (VALID_FIND_OPTIONSを検索してください)

+0

作ることができます:http://guides.rubyonrails.org/active_record_querying.html –

1

これはSQLの 'limit'パラメータの拡張です。たとえば、SELECT * FROM ticket ORDER BY name LIMIT 4となります。したがって、ActiveRecordを含む任意のORMで使用できます。

1

..andあなたがRailsの3を使用している場合は、これはまた、クエリーインターフェイスガイドで覆われていること

@tickets = Ticket.order('name').limit(x).all 
関連する問題