如何获得包含条件的值?

时间:2013-04-05 08:44:48

标签: ruby-on-rails ruby-on-rails-3

我有三个表说shop,item和item_type

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

现在我要渲染

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

但根据条件,请说出item_type_id ='1'的项目以及item_type_status ='available'的状态

2 个答案:

答案 0 :(得分:1)

试试这个:

@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变量加载它。

答案 1 :(得分:0)

您可以将方法或方法传递给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"}
相关问题