包括与ASC或DESC订单的嵌套关系

时间:2013-01-11 18:29:08

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我为JSON请求返回这样的模型

 def index
    @categories = Category.all
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @categories.to_json(:include => :todos) }
  end
end

现在当我返回这个@categories时,我想要包含:Todos的升序和属性说“positon”。有没有办法可以做到这一点..?

类似这样的事情

    render json: @categories.to_json(:include => :todos, :order=>"postion, ASC")

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以在category.rb中定义这样的关联:

has_many :ordered_todos,
             :class_name => "ToDo",
             :order      => "position ASC"

然后写下:

render json: @categories.to_json(:include => :ordered_todos)

答案 1 :(得分:1)

user1541507有一个很好的答案。

如果您发现不想使用has_many方法进行排序,并且想要添加计算属性,请考虑使用jbuilder并创建视图以显示json。这里的the railscast解释得很好。