我想呈现一个对象为json,包括嵌套的属性,并通过created_at属性对它们进行排序。Rails渲染为json,包括嵌套的属性和排序
我这样做是使用代码:
format.json { render :json => @customer, :include => :calls}
我如何排序created_at属性要求?
我想呈现一个对象为json,包括嵌套的属性,并通过created_at属性对它们进行排序。Rails渲染为json,包括嵌套的属性和排序
我这样做是使用代码:
format.json { render :json => @customer, :include => :calls}
我如何排序created_at属性要求?
如果您认为Rails是如何工作的,则调用只是一种与Call模型相关的方法。有几种方法可以做到这一点。一种是在关联上设置订单选项。一种是改变全球呼叫模型的默认范围,另外创建了一个返回呼叫客户模型的新方法
方法1(如果你愿意做编码之前调用任何用处。):
class Customer < ActiveRecord::Base
has_many :calls, :order => "created_at DESC"
end
UPDATE
对于轨道4及以上使用:
class Customer < ActiveRecord::Base
has_many :calls, -> { order('created_at DESC') }
end
方法2:
class Call < ActiveRecord::Base
default_scope order("created_at DESC")
end
方法3:
class Call < ActiveRecord::Base
scope :recent, order("created_at DESC")
end
class Customer < ActiveRecord::Base
def recent_calls
calls.recent
end
end
然后你可以使用:
format.json { render :json => @customer, :methods => :recent_calls}
我想在定义关系,您可以定义默认的排序。 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many – rubish
对不起,作为一个语法纳粹,但渲染是一个图形术语。正确的术语是编码。 – tjameson
@tjameson他们正在调用render(:json)方法,我认为在此上下文中将其称为呈现JSON是安全的。 – Gazler