问题包括第二级和第三级关联

时间:2017-12-26 20:24:56

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

此查询无效,请帮助。我试图包括第二和第三个深层次的关联。

Pedido> has_one(products_pedido)> HAS_ONE(product_size)

@pedidos = Pedido.includes(:pedidos_payments, :products_pedidos => { :product_size } , :estado, :brand, :customer ).where(:is_quote => false)

Ps:我知道根据ActiveRecord的良好做法:)将products_pedido拼错了。

1 个答案:

答案 0 :(得分:0)

如果没有堆栈跟踪,我建议:

假设您的has_one方法名称为products_pedidos,则您的问题看起来与哈希语法有关。

您的语法会创建一个键products_pedidos的哈希值,该哈希值会返回没有值的哈希值。这可能是错误发生的地方。

@pedidos = Pedido.includes(:products_pedidos => { :product_size })

您可能想要的是返回带有值为products_pedidos的键product_size的哈希

@pedidos = Pedido.includes({products_pedidos: :product_size })

整个查询可能如下所示:

@pedidos = Pedido.includes(
  :pedidos_payments,
  {products_pedidos :product_size},
  :estado,
  :brand,
  :customer
).where(is_quote: false)

这是一篇很好的帖子,解释了有关ActiveRecord嵌套关系加载的更多信息:Rails - Nested includes on Active Records?。我还建议修改products_pedido上的命名,以遵循良好的命名惯例。