订单结果在子表中

时间:2009-08-27 04:28:09

标签: ruby-on-rails

@posts = Category.find(params[:id]).posts

如何使用posts表中的列来订购结果?例如在posts.created_at列上?

3 个答案:

答案 0 :(得分:1)

你可以这样做:

@posts = Category.find(params[:id]).posts.all(:order => "created_at")

不确定是否有更好的方法...希望帮助=)

答案 1 :(得分:1)

@posts = Category.find(params[:id]).posts.all(:order => "created_at")

您还可以添加其他内容,例如

@posts = Category.find(params[:id]).posts.all(:order => "created_at", :limit => 10)

@posts = Category.find(params[:id]).posts.all(:order => "created_at DESC")

答案 2 :(得分:0)

另一个非常简单的解决方案是简单地指定关联本身的顺序。

class Post < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :posts, :order => "created_at"
end

通过该关联提取的任何帖子都已经过排序。这将使您可以将模型本身的排序详细信息和控制器中的SQL-ish语法保留在一起。

@posts = Category.find(params[:id]).posts

将以“created_at”顺序返回您的记录。