Ruby 如何返回由两个已更改和属于多个关系组成的结果
Ruby 如何返回由两个已更改和属于多个关系组成的结果,ruby,activerecord,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>,
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
当它不是一个包含三个项目的数组,而是一个包含单个ActiveRecord的数组时,它返回1。我所寻找的正确实现结果是:
class Part
def products
Prooduct.joins(components: :part).where(parts: {id: self.id})
end
end
而不是
self.components.map(&:products).uniq.to_a
它是一个包含数组的数组吗?
pr
显示了什么?这让人尴尬:“pr返回#ActiveRecord::Associations::CollectionProxy…”所以我想我需要一种方法将CollectionProxy转换为数组。这是一个。此外,当您不需要count
的特殊功能时,您应该使用Array#length
,并且r.size
和r。如果部分问题将CollectionProxy
转换为数组,则每个{o | po.class}
都将输出我建议您添加Rails标记。