首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单包含()不起作用

简单包含()不起作用
EN

Stack Overflow用户
提问于 2015-11-28 22:05:44
回答 1查看 54关注 0票数 0

我的工作范围如下:

这是product.rb:

代码语言:javascript
运行
复制
    has_one :current_price, -> {
    where('prices.id = (SELECT MAX(id) FROM prices p2 WHERE product_id = prices.product_id)') 
  }, class_name: 'Price'

我正在尝试获取特定产品的当前价格,并且在不使用include()的情况下获取产品数据。

这是product_controller.rb:

代码语言:javascript
运行
复制
  def current_price
    @product = Product.includes(:current_price).where("id = ?", params[:id])
    respond_to do |format|
      format.json { render :json => @product }
    end
  end

例如,我得到了这个JSON:

代码语言:javascript
运行
复制
{"id":10,"name":"Corneta Minipill","created_at":"2015-11-25T19:49:37.000-04:30","updated_at":"2015-11-25T19:49:37.000-04:30","published":null}

我怀疑添加current_price结果的是同一个JSON,例如:

代码语言:javascript
运行
复制
{"id":10,"name":"Corneta Minipill","created_at":"2015-11-25T19:49:37.000-04:30","updated_at":"2015-11-25T19:49:37.000-04:30","published":null,"current_price":"2000"}

我以前使用过相同的includes(),它可以工作。

我已经尝试过用joins()eager_load()代替joins()

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-28 22:15:36

ActiveRecord::QueryMethods.includes只需要加载关联。

但是,它不会更改模型的序列化重新表示形式,因此关联的模型不会自动地包含在序列化结果中--您还必须对经过方法的to_json选项进行修改。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33976957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档