モデルX has_many YsとモデルY belongs_to Xを仮定します。各Yにはデータベースに挿入された日付があります。さて、すべてのXと熱心な負荷を最後のYをそれぞれのXにロードすることは可能です(各XにはYのbazzilionsがあるので最後のもののみ)。最後の従属レコードをロードしようとしています
4
A
答えて
4
はい、
ソングに新しい関連付けを追加します。この例に
class Song < ActiveRecord::Base
has_many :votes
end
class Vote < ActiveRecord::Base
belongs_to :song
end
てみましょう:
has_one :last_vote, :class_name => 'Vote', :order => 'created_at DESC'
この新しい協会は常にソングのための最も最近作成した投票を返します。 。熱心な負荷それに
:
songs = Song.find(:all, :conditions => 'artist_name = "frank"', :include => :last_vote)
0
以前のソリューションは本当に素晴らしいです!しかし、私はもう一つの特徴を探しています:特定の日付の前に最後の従属レコードを読み込むことは可能でしょうか?これは、ユーザーが曲の投票履歴を閲覧できるようにするためです(前日と翌日へのリンクがあります)。
関連する問題
- 1. Dynamic google map InfoWindowループ内の最後のレコードのコンテンツをロードしています
- 2. 従属としてのボレー
- 3. 最後のレコードとしてCONCAT ID
- 4. cxGrid最後のフィールドに新しいレコードを入力します
- 5. ACCESS SubForm:レコードを追加しようとしています
- 6. タプルから最後の型を削除しようとしていません
- 7. URLに従ってから画像をダウンロードしようとしています
- 8. Railsのリモートフォームと私は従うことをしようとしていた
- 9. ビットマップイメージをPythonでロードしようとしています
- 10. コアデータ1つのfetchRequestの最初と最後のレコードを選択します
- 11. Railsが従属する破壊に属している
- 12. ジャンゴ:私はここの手順に従うことをしようとしています新しいアプリ
- 13. 最後に例外を無視しようとしますか?
- 14. 私はアヤックス従うことをしようとしている、ヌルオブジェクト
- 15. ActiveRecordを使用してデータベーステーブルをロードしようとしています
- 16. 複数のWARを互いにクラスをロードしようとしています
- 17. テーブルAの最新のレコードと同じ名前のテーブルBのすべてのレコードを選択しようとしています
- 18. Ajaxコール後にJavascriptをリロードしようとしています
- 19. mysqlは最後の5行を保持し、古いレコードを削除します
- 20. 頭と尾 - 各ファイルの先頭行と最後の10行を取得しようとしています
- 21. 最後のレコード結果のテーブルクロージャを作成します
- 22. 過去7日間の最後のレコードを取得します
- 23. mysql sqlは各グループの最後のレコードを選択します
- 24. SQL Serverテーブルの最後のレコードを取得します
- 25. 最後のレコード - SQL
- 26. 私はアンドロイドアプリケーションを最適化しようとしています
- 27. レコード数。関連するデータを表示しようとしています
- 28. ldapmodify:ファイルからレコードを追加しようとしています
- 29. ログイン後にページにリダイレクトしようとしていました
- 30. 行は、私はこのチュートリアルに従うことによって、マルチカラムリストビューを作成しようとしました
そのクエリによって生成された結合を調べることは興味深いでしょう。 :)ビットを非正規化し、Songにlast_vote_idというフィールドを追加するのが最善でしょう。新しい投票が追加されるたびに更新されます。ちょうど:include =>:last_vote以降、不要なデータのロード(またはスマートの場合はGROUP BY)が必要です。 – vladr
真、私の上記のコードは完全にテストされていません。 Vlad、あなたのソリューションは私のものに勝るもののように聞こえる。 – Tilendor
これは、最初の曲だけでなく、各曲のすべての投票をプリロードします。これにより、 SELECT "votes"のようなクエリが生成されます。* FROM "votes" WHERE "votes"。 "song_id" IN(1,2,3,4,5)order by created_at DESC –