当前位置: 首页 > 面试题库 >

Rails渲染为json,包括嵌套属性和排序

叶举
2023-03-14
问题内容

我正在尝试将一个对象呈现为json,包括嵌套的属性,并按created_at属性对其进行排序

我正在使用代码执行此操作:

format.json  { render :json => @customer, :include => :calls}

如何按created_at属性对呼叫进行排序?


问题答案:

如果您认为Rails是如何工作的,则调用只是与Call模型相关的一种方法。有几种方法可以做到这一点。一种是在关联上设置订单选项。一种是全局更改Call模型的默认范围,另一种是在Customer模型中创建一个新方法来返回调用(如果您希望在编码之前对调用进行任何操作,则很有用。)

方法1:

class Customer < ActiveRecord::Base
  has_many :calls, :order => "created_at DESC"
end

更新

对于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}


 类似资料:
  • 问题内容: 我有三种模式: 我想获取包含A的所有B和C的json数据。我尝试了许多类似的操作: 但没有任何效果。什么是做到这一点的好方法。 问题答案: 请参阅以查看可以传递给的选项。报价: 要包括关联,请使用… 二级和更高级别的关联也可以工作: 不需要像自动那样直接调用或直接调用。

  • 我试图提供一种方法,在一个模型中生成一个新对象(列表),在另一个模型中使用has_many关系(通过分组)生成一个新的关联对象(项目)。我能够让表单工作正常,但无法弄清楚为了正确完成创建过程,我缺少什么。 Rails v.5.1.2,Ruby v.2.4.1 lists_controller.rb items_controller.rb list.rb模型 item.rb模型 grouping.r

  • 问题内容: 我正在尝试从JSON中的多个模型中呈现结果。我的控制器中的以下代码仅呈现第一个结果集: 任何帮助将不胜感激,谢谢。 问题答案: 一种执行此操作的方法是使用您要渲染的对象创建一个哈希,然后将其传递给render方法。像这样: 如果未通过活动记录关联模型,则可能是最好的解决方案。 如果存在关联,则可以将参数传递给render调用,如下所示: 请注意,如果采用这种方法,则不必在上一节中检索变

  • Rails 布局和视图渲染 本文介绍 Action Controller 和 Action View 中布局的基本功能。 读完本文,你将学到: 如何使用 Rails 内建的各种渲染方法; 如何创建具有多个内容区域的布局; 如何使用局部视图去除重复; 如何使用嵌套布局(子模板); 1 概览:各组件之间的协作 本文关注 MVC 架构中控制器和视图之间的交互。你可能已经知道,控制器的作用是处理请求,但经

  • 我有一个使用Spring Boot 1.5.1和Spring Data Rest的数据库服务。我将我的实体存储在MySQL数据库中,并使用Spring的PagingAndSorting Repository通过REST访问它们。我发现这表明支持按嵌套参数排序,但我找不到按嵌套字段排序的方法。 我有以下课程: 例如,当使用该方法时: 并调用 URI http://localhost:8080/peo

  • 我使用带有嵌套属性的Vaadin网格,例如。我想用对这些列进行排序,因为是一个LocalDateTime,它总是。但这行不通。我需要为每个这样的列定义一个,我已经使用了很多:-) 这是一个bug还是故意的? 亲切地问候 张秀坤