Rails:范围顺序问题

时间:2011-01-22 18:53:46

标签: sql ruby-on-rails database ruby-on-rails-3 sorting

我有一些属于位置和类别的帖子,有点像craigslist帖子。

我想按最近发布的顺序排序,如果用户指定的话,也按位置和类别进行过滤。

有人可以举例说明如何做到这一点吗?

2 个答案:

答案 0 :(得分:4)

在Rails 3中,您可以一起更改订单,更多信息。 ASCICasts activerecord queries in Rails3

query = Post.order("published_at desc")
query = query.where("location_id = ?", params[:location_id]) unless params[:location_id].blank?
query = query.where("category_id = ?", params[:category_id]) unless params[:category_id].blank?
@posts = query.all

答案 1 :(得分:0)

您可以将用于排序类别和位置的字段缓存到帖子中。

before_save: cache_sortables

def cache_sortables
  self.category_title = self.category.title if self.category?
  self.location_title = self.location.title if self.location?
end

Post.find(:all, :order => 'location_title, category_title, created_at')

当父类别/位置标题发生变化时,读者可以更新帖子。