如何返回由两个更改的has_and_belongs_to_many关系组成的结果

时间:2014-01-05 17:44:35

标签: ruby activerecord

r是一个数组,其中有三个项目是

的结果
r = Part.components.products.uniq 

其中部分HABTM组件和组件HABTM产品。

为什么这段代码:

class Array
  def p_object_ids
    puts each { object_id }.join(", ")
  end
end

p r.class
r.p_object_ids
p r.count

生成此输出:

Array
#<User:0x00000006535650>, #<User:0x000000065338f0>, #<User:0x000000065336e8>
1

1 个答案:

答案 0 :(得分:1)

当它实际上不是三个项目的数组时返回1,而是包含单个ActiveRecord的数组。我正在寻找的正确实现结果是:

class Part
    def products
        Prooduct.joins(components: :part).where(parts: {id: self.id}) 
    end
end

而不是

self.components.map(&:products).uniq.to_a