Порядок активной записи Rails по полю в связанной таблице - PullRequest
0 голосов
/ 21 апреля 2011

У меня типичное приложение в стиле форума. Есть модель Topics, которая has_many Posts.

Что я хочу сделать с помощью Rails 2.3.x - это запросить таблицу тем и отсортировать по последнему сообщению в этой теме.

@topics = Topic.paginate :page => params[:page], :per_page => 25,
  :include => :posts, :order => 'HELP'

Я уверен, что это просто, но не радуйтесь с Google. Спасибо.

1 Ответ

1 голос
/ 21 апреля 2011

Сортировка по объединенному столбцу, вероятно, является плохой идеей, и для ее выполнения потребуется много времени во многих ситуациях.Что было бы лучше, так это перевернуть специальное поле даты в модели Темы при создании нового сообщения:

class Post < ActiveRecord::Base
  after_create :update_topic_activity_at

protected
  def update_topic_activity_at
    Topic.update_all({ :activity_at => Time.now }, { :id => self.topic_id})
  end
end

Затем можно легко отсортировать по столбцу activity_at при необходимости.

При добавлении этого столбца вы всегда можете заполнить начальное значение activity_at наибольшим временем публикации, если у вас есть данные для переноса.

...