论坛首页 Ruby版 rails

请教一个关于Find的问题..

浏览 3031 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2006-12-16
大大们,最近在做一个ROR的程序,很多问题都是自己一个人解决的,有些实在不是很好想明白,特来请教,需求描述如下:

在论坛或者别的上面程序中,首页都会显示各个论坛板块的最新的帖子,请问这个是怎么实现的,
按照我的设想,应该是这个的:
@posts=Post.find(:all,:order=>"forum_id,create_at DESC" )
然后在显示的时候按照forum_id来显示各自板块的最新帖子,但是这个在RHTML中怎么取出最新的帖子呢??

我只能完全遍历,如下:
<% @posts.each do |post| %>
<%= post.title %>
<% end %>

这样就会全部显示出来,而我想要得只是每个板块的最新的那一个帖子,希望指教一二,谢了...
   
时间:2006-12-16
Post.find_by_sql("select *,max(create_at) from post group forum_id"
个人参考
   
0 请登录后投票
时间:2006-12-16
这样也许好一点:
forums = Forum.find :all
@last_post_of_forum = []
for forum in forums
   @last_post_of_forum << Post.find :first,:conditions=>['forum_id=?',forum.id],:order => "create_at DESC",:limit => 1
end



或者你可以在models 中设置(参考自beast)。
class Forum< ActiveRecord::Base
   has_many :posts,:order => 'posts.created_at desc' do
     def last
        @last_post ||= find(:first, :include => :user, :limit => 1)
     end
   end
end

class Post< ActiveRecord::Base
      belongs_to :forum
      belongs_to :user
end


views/form/index.rhtml
<td class="inv lp">
      <% if forum.posts.last %>
        <%= time_ago_in_words(forum.posts.last.created_at) %><br />
        by <strong><%= h(forum.posts.last.user.display_name) %></strong>
      <% end %>
    </td>
   
0 请登录后投票
时间:2006-12-16
to:aguang3190076
你的建议让我的思维更加灵活,谢谢!

to:myaniu
你的方法如此详细,让我感动,谢谢!

看来我自己的思维还不够Ruby..多谢大家指导...
   
0 请登录后投票
时间:2006-12-17
class Forum < ActiveRecord::Base  
    has_many :posts,:order => 'posts.created_at desc'  
    has_one :last_post,:order => 'posts.created_at desc'
end 

Forum.find(:all, :include=>:last_post)
   
0 请登录后投票
论坛首页 Ruby版 rails

跳转论坛: