Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何返回由两个已更改和属于多个关系组成的结果_Ruby_Activerecord - Fatal编程技术网

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标记。