我正在尝试使用Rails执行此非基本查询:
proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} )
关键是我需要将'ids'数组传递给find
方法。
我想从一组ActiveRecord对象中提取那些'ids',其中每个对象都配有'id'属性。
当我尝试使用Rails控制台时:
proj_project.proj_charges.each{|pc| pc.proj_repartition_id}
我得到与proj_project.proj_charges
我做错了什么?
=== UPDATE ===
根据答案,我的权威工作代码是:
proj_project.proj_charges.collect{|pc| pc.proj_repartition_id}
答案 0 :(得分:1)
而不是使用每个尝试地图或收集 - 他们应该返回一个数组。
答案 1 :(得分:1)
每个只执行每个项目的do block代码,但不“保存”返回值。
Collect和Map执行每个项目的do块代码和数组中的返回值。
希望有意义
答案 2 :(得分:1)
proj_project.proj_charges.map(&:proj_repartition_id)
简短的写作方式
proj_project.proj_charges.map{|pc| pc.proj_repartition_id}