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
答案 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