Menyortir daftar Topik berdasarkan tanggal dibuat_pada postingan terakhirnya

Membuat aplikasi forum.

class Topic < ActiveRecord::Base
  belongs_to :user
  belongs_to :board
  has_many :posts, :inverse_of => :topic
end

class Post < ActiveRecord::Base
  belongs_to :user
  belongs_to :topic, :inverse_of => :posts
end

Saat melihat Papan, saya ingin daftar Topik berada dalam urutan Topik pada posting terakhir dibuat_pada tanggal. Namun, saya tidak tahu cara menulis ini sedemikian rupa sehingga dapat dipahami oleh metode order().

Idealnya, sesederhana ini

@topics = @board.topics.order("topic.posts.last.created_at")

Apa pun yang saya tulis menghasilkan kesalahan tentang kolom yang tidak ada.

Satu hal penting yang perlu diperhatikan adalah @topics ini akan dimasukkan ke dalam paginasi, jadi saya tidak bisa begitu saja mengekstrak hasil @board.topics, memesannya sendiri, lalu membuat paginasi karena paginasi memerlukan jenis koleksi tertentu.


person Adam    schedule 15.08.2014    source sumber


Jawaban (1)


  1. Selalu lampirkan pesan kesalahan.
  2. gunakan pengurutan:

    @topics = @board.topics.sort{|t| t.posts.last.created_at}

person Easy peasy    schedule 15.08.2014
comment
Metode Anda menghasilkan kesalahan: CACHE (0.1ms) SELECT "posts".* FROM "posts" WHERE "posts"."topic_id" = ? ORDER BY "posts"."id" DESC LIMIT 1 [["topic_id", 3]] *** ArgumentError Exception: comparison of ActiveSupport::TimeWithZone with 0 failed Selain itu, saya telah mencoba hal seperti ini dan tidak berhasil karena, setelah diurutkan, pemberian nomor halaman pada daftar yang diurutkan menghasilkan kesalahan berikut: *** NoMethodError Exception: undefined method paginate' untuk #‹Array:0xb571f63c›`. - person Adam; 16.08.2014
comment
karena kesalahan ini coba tambahkan require 'will_paginate/array' di pengontrol Anda - person Easy peasy; 16.08.2014