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

Rails对象关系和JSON呈现

华鹭洋
2023-03-14
问题内容

免责声明,我对Rails知之甚少。我会尽量简洁。考虑到Rails中的以下模型关系:

class ModelA < ActiveRecord::Base
  belongs_to :ModelB

...

class ModelB < ActiveRecord::Base
    has_many :ModelA

当调用ModelA控制器的show
action时,返回的JSON应该显示所有ObjectA,这些ObjectAs是该ObjectB的子代的ObjectB的子代。

因此,如果我有一个包含ID 1、2和3的ObjectA的ObjectB,然后访问:/modela/1.json

我应该看到:

{
  "modelb": {
    "id": "1",
    "modela": [insert the ModelA JSON for ID's 1, 2 and 3]
  }
}

问题答案:

默认情况下,您只会获得modelb上面示例中表示的JSON 。但是,您可以告诉Rails也包括其他相关对象:

def export
  @export_data = ModelA.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render :json => @export_data.to_json(:include => :modelb) }
  end
end

如果您不想在导出中看到某些字段,甚至可以告诉它排除某些字段:

render :json => @export_data.to_json(:include => { :modelb => { :except => [:created_at, updated_at]}})

或者,仅包括某些字段:

render :json => @export_data.to_json(:include => { :modelb => { :only => :name }})

您可以根据需要将它们嵌套得更深(假设ModelB也具有has_many ModelC):

render :json => @export_data.to_json(:include => { :modelb => { :include => :modelc }})

如果要包括多个子模型关联,则可以执行以下操作:

render :json => @export_data.to_json(include: [:modelA, :modelB, :modelN...])


 类似资料:
  • 问题内容: 我有一个Ruby数组,如何在Rails 3.0中将其呈现为JSON视图? 我的控制器方法是 问题答案:

  • 问题内容: 我有这种关系:一个用户可以有零只或一只狗,但是一只狗必须属于某人。 我想定义以下范围: 我可以在第一种情况下执行此操作,因为默认情况下,在rails中,联接是INNER JOIN: 1 /这种针对第一个示波器的解决方案是否足够好? 2 /第二个课程你会做什么? 3 /(有一些关联)是否有更好的方法?: 谢谢你的帮助! 问题答案: 对于问题2,我认为以下方法应该有效: 其中include

  • 问题内容: 现在我有这行: 但是,由于程序属于公司,我想显示公司名称而不是公司ID。 渲染程序时如何包括公司名称? 问题答案: 这样的事情应该起作用:

  • 继承和复合都提倡建立与现有的类有许多共性的新类来实现软件复用。还有其他一些方法可以利用类所提供的服务。尽管人不是一辆汽车,人也不能包含汽车,但人当然可以使用汽车。一个函数可以简单地向对象发出函数调用来使用这个对象。 一个对象可以知道另外一个对象,知识网中常常存在这种关系。一个对象可以包含指向对象的指针或对该对象的引用,从而知道那个对象的存在。在这种情况下,可以说一个对象和另一个对象具有知道关系。

  • 我有如下字符串: 如何设置格式,如下所示:

  • 问题内容: 假设您位于用户控制器中,并且想要获取显示请求的json响应,那么可以在您的views / users /目录中创建一个名为show.json的文件,并在用户之后#show操作完成后,它将呈现文件。 当前,您需要执行以下操作: 但是,如果您可以创建一个show.json文件,它会像这样自动呈现,那就太好了: 这将为我节省大量的痛苦,并且会消除我在控制器中渲染json时得到的那种可怕的肮脏