浏览 3031 次
|
锁定老贴子 主题:请教一个关于Find的问题..
精华帖 (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 %> 这样就会全部显示出来,而我想要得只是每个板块的最新的那一个帖子,希望指教一二,谢了... 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2006-12-16
Post.find_by_sql("select *,max(create_at) from post group forum_id"
个人参考 |
|
| 返回顶楼 | |
|
时间: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>
|
|
| 返回顶楼 | |
|
时间:2006-12-16
to:aguang3190076
你的建议让我的思维更加灵活,谢谢! to:myaniu 你的方法如此详细,让我感动,谢谢! 看来我自己的思维还不够Ruby..多谢大家指导... |
|
| 返回顶楼 | |
|
时间: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)
|
|
| 返回顶楼 | |






