Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用过滤后的ActiveRecord对象创建嵌套JSON_Ruby On Rails_Ruby_Json_Activerecord - Fatal编程技术网

Ruby on rails 使用过滤后的ActiveRecord对象创建嵌套JSON

Ruby on rails 使用过滤后的ActiveRecord对象创建嵌套JSON,ruby-on-rails,ruby,json,activerecord,Ruby On Rails,Ruby,Json,Activerecord,我需要创建一个包含3级活动记录对象的嵌套JSON数据,如下所示: 接触有很多障碍 Chantiers有很多照片 目前,JSON文件包含与联系人关联的所有记录。但是,我需要限制3级对象照片仅显示“共享”字段等于true的记录 类似于:Photo.where(共享:true)而不是所有照片 有人能就如何实现这一目标提出建议吗 非常感谢实现这一点的一种方法是创建一个关联,该关联经过过滤,仅显示“共享照片”,然后将其包含在JSON输出中。在您的联系人型号中,添加以下内容: # You probabl

我需要创建一个包含3级活动记录对象的嵌套JSON数据,如下所示:

  • 接触有很多障碍
  • Chantiers有很多照片
目前,JSON文件包含与联系人关联的所有记录。但是,我需要限制3级对象照片仅显示“共享”字段等于true的记录

类似于:Photo.where(共享:true)而不是所有照片

有人能就如何实现这一目标提出建议吗


非常感谢

实现这一点的一种方法是创建一个关联,该关联经过过滤,仅显示“共享照片”,然后将其包含在JSON输出中。在您的
联系人
型号中,添加以下内容:

# You probably have something like this already:
has_many :photos

# Below is what you need to add

# Rails 4
has_many :shared_photos, -> { where(shared: true) }, source: :photos

# Rails 3
has_many :shared_photos, conditions: lambda { where(shared: true) }, source: :photos
一旦设置了条件关联,您就可以像通常包含关联一样,在
as_json
调用中使用它,如下所示:

render :json => contact.as_json(include: :shared_photos)

谢谢@ryan brunner!
render :json => contact.as_json(include: :shared_photos)