Ruby on rails Rails 5需要查找与子对象集合关联的所有父对象
当我有一个孩子的集合(发票),我想找到所有的父母(订单),我该怎么做呢 所以订单Ruby on rails Rails 5需要查找与子对象集合关联的所有父对象,ruby-on-rails,Ruby On Rails,当我有一个孩子的集合(发票),我想找到所有的父母(订单),我该怎么做呢 所以订单有很多:发票 如何查找与发票集合关联的所有订单?这应该可以做到: invoices = some_logic_to_get_invoices orders = Order.includes(:invoices).where(invoices: { id: invoices }) 这应该可以做到: invoices = some_logic_to_get_invoices orders = Order.include
有很多:发票
如何查找与发票集合关联的所有订单?这应该可以做到:
invoices = some_logic_to_get_invoices
orders = Order.includes(:invoices).where(invoices: { id: invoices })
这应该可以做到:
invoices = some_logic_to_get_invoices
orders = Order.includes(:invoices).where(invoices: { id: invoices })
invoices.map(&:orders).uniq
invoices.map(&:orders).uniq
这是最昂贵的(性能方面的)方法。另外,数组数组应该是flatte
ed。不要要求Rails以非常高效的方式来做SQL可以做的事情,这是最昂贵的(性能方面的)方法。另外,数组数组应该是flatte
ed。不要要求Rails以非常高效的方式完成SQL可以完成的事情成功!我觉得有点奇怪,在where
中,您可以要求嵌套的id
键以单数形式给出一个集合(复数)作为值。@code MonKy这是因为invoices
实际上是一个ActiveRecord::Relation对象,它是一个作用域,Rails的ActiveRecord知道您要“嵌套”在where子句中定义了该范围。查看订单。包括(:发票)。其中(发票:{id:invoices})。to_sql
。另外,如果invoices
是一个数组,则必须map(&:id)
才能执行显式版本。成功!我觉得有点奇怪,在where
中,您可以要求嵌套的id
键以单数形式给出一个集合(复数)作为值。@code MonKy这是因为invoices
实际上是一个ActiveRecord::Relation对象,它是一个作用域,Rails的ActiveRecord知道您要“嵌套”在where子句中定义了该范围。查看订单。包括(:发票)。其中(发票:{id:invoices})。to_sql
。另外,如果invoices
是一个数组,则必须map(&:id)
才能执行显式版本。