如何获得包含条件的值?

我有三个表说shop,item和item_type

商店包含商店的名称,商品包含每个商店的商品,item_type包含不同类型的商品以及可用或不可用的状态。

现在我想渲染

format.json { render json: {:shop => @shops.as_json(:include => :items)}} 

但根据条件,说item_type_id =’1’的项目和item_type_status =’available’的状态

试试这个:

 @shops = Shop.includes(:items).where("items.itemp_type = ?", 'accesories') format.json { render json: { :shop => @shops.as_json(:include => :items) } } 

编辑:

您可以这样做的一种方法是使用要渲染的对象创建哈希,然后将其传递给render方法。 像这样:

 respond_to do |format| format.json { render :json => {:shops => @shops, :items => @items }} end 

如果模型没有通过活动记录关联,那么这可能是您的最佳解决方案。

如果存在关联,则可以将:include参数传递给render调用,如下所示:

 respond_to do |format| format.json { render :json => @shops.to_json(:include => [:items])} end 

请注意,如果采用这种方法,您不必在上面的部分中检索@items变量,Rails会自动从@shops变量加载它。

您可以将方法或方法传递给to_json或as_json方法,并包含所需的记录。 Rails api的示例:

 user.as_json(:methods => :permalink) # => {"id": 1, "name": "Konata Izumi", "age": 16, "created_at": "2006/08/01", "awesome": true, "permalink": "1-konata-izumi"}