関連付けたモデルの属性で、関連元モデルをソートする
【2013.8.10追記】この方法だと所望の結果を得られない場合があります。こちらのエントリも参照ください。
has_manyで関連付けた先のモデルが持っている属性で、元のモデルをソートしたくなりました。
以下のような2つのモデルがあります。
class Spot < ActiveRecord::Base has_many :report end
class Report < ActiveRecord::Base belongs_to :spot end
観光スポット情報を持つspotモデルに、訪問記事であるreportモデルが複数ぶらさがっているイメージ。
それで、登録されているレポートの日付(report.created_at)の新しい順に、spotモデルをソートして取り出したいというのが、今回やりたいこと。
ググってみたところ、逆方向のソートの方法を教えてくれているページがありました。
今回の例だと、reportモデルをspotモデルの属性でソートする方向がそれにあたります。
Railsの事だから逆方向でも大丈夫だろうと思ってやってみたところ、無事成功。
こんな感じで所望の動作をしてくれました。
class Spot < ActiveRecord::Base has_many :report default_scope :include => :report, :order => "reports.created_at DESC" end
毎度、貴重な情報を共有くださっている皆様に感謝です。