Привет, я сейчас создаю небольшое приложение на форуме с rails (3). Я довольно новичок в вопросе Rails, и я застрял, когда хочу вытянуть верхние доски (доска принадлежит форуму), указанная с идентификатором форума).
«определение верхней доски»: доска, принадлежащая конкретному идентификатору forum_id, у которого больше всего topic_replies & theme.
"Генеалогическое древо": Форум> Форум> Тема> Тема Ответ
мои модели:
**forum.rb**
class Forum < ActiveRecord::Base
default_scope :order => 'display_order ASC'
has_many :boards, :dependent => :destroy
end
**board.rb**
class Board < ActiveRecord::Base
default_scope :order => 'display_order ASC'
belongs_to :forum
has_many :topics, :dependent => :destroy
has_many :topic_replies, :through => :topics
def latest_topic_reply
t = TopicReply.find_by_sql("SELECT tr.* from topic_replies tr, topics t where tr.topic_id = t.id AND t.board_id = #{self.id} ORDER BY tr.updated_at desc LIMIT 1;")[0]
end
end
**topic.rb**
class Topic < ActiveRecord::Base
belongs_to :board
has_many :topic_replies, :dependent => :destroy
end
**topic_reply.rb**
class TopicReply < ActiveRecord::Base
belongs_to :topic
end
В SQL я бы сделал это:
"SELECT b.* FROM boards b,topics t WHERE t.board_id=b.id AND b.forum_id=2 GROUP BY board_id ORDER BY SUM(t.topic_replies_count) DESC LIMIT 4;"
Я предпочитаю управлять этим с помощью активных записей, хотя (или это не лучше, чем SQL?), Я пока не слишком знаком с этим. Может кто-нибудь подтолкнуть меня в правильном направлении, пожалуйста?
Заранее спасибо