繁体   English   中英

在Ruby on Rails中呈现JSON和按属性过滤

[英]Render JSON and filtering by attribute in Ruby on Rails

以下内容呈现属性selected_branch的json,包括其所有产品以及产品类别:

render json: selected_branch, :include => { :products=> {:include =>:categories }, :enabled => true }

如何只包含所有具有“ Product.enabled = true”的产品?

在ActiveRecord查询的较早位置(大概会获取selected_branch的数据),将其构建到查询中render :json之前。 我将从在模型上使用Rails范围开始。

像这样:

在您的模型中(不确定它是什么,因此我将其称为“分支”)

Branch.rb

class Branch < ActiveRecord::Base
   has_many :products
   scope :with_enabled_products, -> { includes(:products).where(products: {enabled: true}) }
end

然后在您的控制器中

selected_branch = Branch.with_enabled_products

然后,您呈现的JSON应该仅是已启用产品的分支的JSON。 当然,您始终可以在该范围的末尾加上.where(...) ,因为它只是一个ActiveRecord关系,您可以进一步缩小数据集的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM