私の問題を示す仮説的状況:アーティストが「アルバム」を作成し、それらのアルバムに「曲」を追加できるウェブアプリを構築する。 ユーザーがアルバムにソングを広告するときに、そのアルバムを最近更新されたアルバムのリストに表示します。Rails Active Record - 最近更新されたアソシエイティブ
問題:可能であるとは思いますが、このクエリをActive Recordに書き込む方法が正確にはわかりません。
例:新しい曲がアルバムに追加された場合、このアルバムを結果セットに戻したいと思います。最終的に私が望む結果はアルバムのセットですが、そのセットは更新された子供の種類、つまり曲に依存します。
別の言い方をすれば、誰かがウェブページに来て、最近更新されたアルバムをすべて見ることができるようにする(更新は新しい曲がアルバムに追加されたときである)。
クラス:
class User < ActiveRecord::Base
has_many :songs
end
class Song < ActiveRecord::Base
belongs_to :user
has_many :album_songs
has_many :albums, :through => :album_songs
# has a release_date field too, which is when the song will be released.
end
class AlbumSong < ActiveRecord::Base
belongs_to :song
belongs_to :album
end
class Album < ActiveRecord::Base
has_many :album_song
has_many :songs, :through => :album_song
end
がどのように私は最近、彼らに追加リリースされた曲を持っていたすべてのアルバムを返すようにクエリを記述することができますか?リリースされた曲は、出てきた曲です< = NOW()。
その他の考慮事項ユーザーが3曲をアルバムに追加した場合、そのアルバムがリストに1回だけ表示されるようにします.3回ではなく、その曲がリリースされたときに表示されます。曲がまだリリースされていない場合、このコースは更新されたとして返されません。リリースされた曲が追加されるたびに、コースは '最近更新された'リストに移動します。したがって、私はこれに独特の何かを必要としている(私は思う)。
これはActiveRecordでは可能かどうかはわかりません。私は最終的にはtitle
とアルバムのid
が必要です。そしてそこから必要なものすべてを構築できます。
これを行うにはどうすればよいですか?
データベースは新曲が追加された後、アルバムのupdated_atのフィールドを更新するためにはPostgres
概念質問あなたのアプリがあなたの 'ユーザを更新するために、それはokです。 updated_at'フィールドに曲が追加されたら? –
@AlejandroMontillaいいえ、他のビジネス上の理由から、私たちはそれを更新できません。 –
これを管理するために 'users'にカラムを追加することはオプションではありませんか? –